zoukankan      html  css  js  c++  java
  • 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;

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

  • 相关阅读:
    React元素渲染
    初识JSX
    微信小程序复制文本到剪切板
    微信小程序报错request:fail url not in domain list
    小程序,通过自定义编译条件,模拟推荐人功能
    积分抵扣逻辑
    微信小程序 switch 样式
    tomcat 配置开启 APR 模式
    tomcat8 传输json 报错 Invalid character found in the request target. The valid characters are defined in RFC 3986
    c++数组初始化误区
  • 原文地址:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/11890463.html
Copyright © 2011-2022 走看看