六 完整性约束:
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 //同步更新
三种关系: 一对一
一对多
多对一