• MySQL-约束


    概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性

    分类:

      1.主键约束:primary key

       Ⅰ.创建表时添加非空约束

          create table stu(

            id int primary key,

            name varchar(20)

          );

        Ⅱ.创建表完成以后添加非空约束

          alter table stu modify id int primary key;

        Ⅲ.删除非空约束

          alter table stu drop primary key;

        注意:

          ①含义:非空且唯一

          ②一张表只能有一个字段为主键

          ③主键就是表中记录的唯一标识

      2.非空约束:not null

           Ⅰ.创建表时添加非空约束

          create table stu(

            id int,

            name varchar(20) not null  --name为非空

          );

           Ⅱ.创建表完成以后添加非空约束

          alter table stu modify name varchar(20) not null;

        Ⅲ.删除非空约束

          alter table stu modify name varchar(20);

      3.唯一约束:unique

       Ⅰ.创建表时添加唯一约束

          create table stu(

            id int,

            phone_number varchar(20) unique --添加了唯一约束

          );

         Ⅱ.创建表完成后添加唯一约束

          alter table stu modify name varchar(20) unique; 

         Ⅲ.删除唯一约束

          alter table stu drop index phone_number;  --注意,删除唯一约束和删除非空约束的方法不一样

         注意:在MySQL中,如果添加了唯一约束的表的多个值为null,则不会报错,在这里,null有点像表示的是不确定

      4.外键约束:foreign key

       Ⅰ.在创建表时,可以添加外键(有外键的表是从表):

          create table 表名(

            ......

            外键列

            constraint 外键名称 foreign key(外键列名称)references 主表名称(主表列名称)

           );

       关联两张表的约束:

        主表部门表:

          create table department(

            id int primary key auto_increment,

            dep_name varchar(20);  --部门名

            dep_location varchar(20);   --部门地址

          );

        从表员工表:

          create table employee(

            id int primary key auto_increment,

            name varchar(20),

            age int,

            dep_id int,  --外键对应主表的主键

            constraint dep_emp_fk foreign key(dep_id) references department(id);

          );

        Ⅱ.在创建表后,可以添加外键

          alter table employee add constraint dep_emp_fk foreign key(dep_id) references department(id);

        Ⅲ.删除外键

          alter table employee drop foreign key emp_dept_fk;

        Ⅳ.级联操作:级联就是说,如果相互关联的两个表,关联的部分的从表想要修改成主表中没有的数据,则会报错,关联的部分的主表想要修改从表中没有的数据,也会报错,如果使用级联,则主表修改的数据从表与之相关联的数据也会相应的修改过去,不会报错

          只需要在创建表的添加外键的时候(上面的Ⅱ),后面加上on update cascade即可 如:alter table employee add constraint dep_emp_fk foreign key(dep_id) references department(id) on update cascade;

          如果想要级联删除,则先删除外键,然后在创建表的添加外键的时候(上面的Ⅱ),后面加上on delete cascade即可 如:alter table employee add constraint dep_emp_fk foreign key(dep_id) references department(id) on delete cascade;

          级联更新和删除可以都写上,则说明说明你既可以有级联更新的权限也有级联删除的权限,则更新和删除就不会因为主外键约束而修改不了

  • 相关阅读:
    Appium 服务关键字(转)
    android自动化之appium的环境搭建
    关于性能测试几个名词概念的说明
    关于.net服务启动注册到zookeeper,但是注册节点20分钟自动消失解决办法
    关于tomcat启动报“this web application instance has been stopped already”的处理
    loadrunner在win10破解提示:Cannot save the license information because acceses to the registry is denied的解决办法
    Teamcity部署.net服务“无法连接到远程服务器”解决方式
    数据库主从不同步问题随笔
    eclipse 常用快捷键
    在linux中安装jdk以及tomcat并shell脚本关闭启动的进程
  • 原文地址:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/11890463.html
Copyright © 2020-2023  润新知