mysql完整性约束

六 完整性约束:
        not null  default:
                如果单独设置not null ,不能插入空值
                如果设置了not null, 又指定了default, 可以插入空值, 默认值生效

        unique  key:  单列唯一
                unique(id),
                unique(name)
                create table t1(id int not null);

        联合唯一:  多行记录中只要有一列字段的值不同就可以, 完全一致不行
            unique(id, name)

        primary key : 单列主键  不能为空, 唯一
            化学反应  : not null + unique  //这样设置会显示成PRI  但与设置成primary  不同,


        联合主键 :create table t9(
                    id int,  
                    name varchar(10),
                    primary key(id,name)
                        );

                     一行记录中   id 和name  有一项不同即可


        auto_increment :  自动增长,默认+一个步长, 数字
            自动增长, 如果删除已经创建的 ID  插入下一条记录时候 依然会增长,  旧的ID仍然占据,
             再次插入新的数据 时候, ID在最后一条记录的ID上面增长


        truncate  :  清空表, 删除所有记录, ID  重新插入数据时候, ID 初始化0
            truncate student;  //清单表student
                清空表区分delete和truncate的区别:
                    delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
                    truncate table t1;数据量大,删除速度比上一条快,且直接从零开始。




        起始偏移量:  auto_increment_offset
        步长: auto_increment_increment
        show variables like "auto_inc%";  // 查询可用的开头是quto_inc的词
            set session quto_increment_increment=5; //设置步长,  当次连接中有效,

            set global auto_increment_increment=3;   //设置步长是3,  全局配置, 之后都生效

            set global auto_increment_offset=3;  //设置起始偏移量 ,起始值3
            tip:  如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值会被忽略
                    设置步长和偏移量之后,需要重登录



        foreign key: 外键 (关联其他表, 的数据, 省空间//)
            constraint 外键名 foreign key((副表)本表字段)  references 主表名(字段)  //这样创建数据不同步,

            constraint 外键名 foreign key((副表)本表字段)  references 主表名(字段)
            on delete cascade   //同步删除
            on update cascade  //同步更新
             三种关系:  一对一
                        一对多
                        多对一
原文地址:https://www.cnblogs.com/tcpblog/p/9997739.html