约束性条件2
1、primary key
特征: 不能重复,且不可以为空。
innodb存储引擎,一张表内必须有一个主键。
可以不指定主键,但是一旦mysql识别标的类型时innodb,它就开始寻找字段,找不为空且唯一的字段为主键,若找不到,就用隐藏的字段。
所以 innodb 建一个表,应该指定一个主键。
单列主键:

如果插入重复的id:
会报错:

因为primary key,不为空且唯一
复合主键:
多个字段联合成为主键。例如:
插入内容:

2、auto
建表的时候,必须要有的ID字段,这个用来表示第几条记录,这样每次都需要添加比较繁琐,可以找到一个方式自动添加。
自增长的字段必须是一个key:


可以实现自动添加id,同时也可以手动传值

# 修改默认起始偏移量和单步步长
show variables like 'auto_inc%'; #查询当前状态 % 任意个数的任意字符

1)步长
auto_increment_increment 默认为1
2)起始偏移量
auto_increment_offset默认1
3)设置步长
会话级别 ,本次连接有效
全局,所有会话都有效,前提是重启会话加载这条语句
4)设置起始偏移量 ,一定要小于步长的
设置完,需要关闭会话,exit,然后再 mysql进入,

然后创建个表,查看插入数据时,id分布:
插入数据:

可以看到此时初始序号3,步长5.
在这里,补充一下 清空表方式:
delete from t20; 清除全部内容

用delete清空表后,查询表,发现此时innodb引擎将id定位在23,也就是说,再向里面插入数据,id计数冲23开始,意味着delete并没有把表真正的清空。
所以清空表不要用delete ,常跟where 匹配使用,删除固定字段用。清空表应用:
truncate t20;
