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 //同步更新 三种关系: 一对一 一对多 多对一