列属性 自动增加
自动增加:auto_increment,当给定某个字段该属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加后,填充数据
通常自动增长用于逻辑主键
原理
自动增长的原理
1.系统中有维护一组数据用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,再给定一个指定的步长
2当用户进行数据插入的时候,如果没有给定值,系统在原始值上再加上步长,所以就变成新的数据
3.自动增长的触发:给定属性的字段没有提供值
4.字段增长只适用于数值
使用自动增长
基本语法:在字段之后增加一个属性auto_increment
插入数据:触发自动增长,不能给定具体值
修改自动增长
1.查看自增长(可以使用显示表创建语句),自增加一旦触发使用之后,会自动的在表选项中增加一个选项(一张表最多只能拥有一个自动增长)
2.表选项可以通过修改表结构来实现
删除自动增长
删除自增长,就是在字段属性之后不再保留auto_increment,当用户修改自增长所在字段时,如果没有看到auto_increment属性,系统会自动清除该自增长
初始设置
在系统中,有一组变量用来维护自增长的初始值和步长
查看自增长初始变量 show variables like ‘auto_increment%’
细节问题
- 一张表只有一个自增长,自增长会上升到表选项中
- 如果数据插入中没有触发自增长(给定了数据),那么自增长不会表现
- 自增长在修改的时候,值可以较大,但是不能比当前已有的自增长字段小
怎么重置mysql的自增列
- 支持设置自增列的值
ALTER TABLE table_name AUTO_INCREMENT = 1;
不过这种方式自能设置大于当前使用的值,不能设置小于等于当前已经使用的自增列的值。myisam如果设置小于等于,则自增列的值会自动设置为
当前最大值加1。innodb则不会改变。
2.通过TRUNCATE把自增列设置为0,从MySQL 5.0.13开始TRUNCATE就能重置自增列为0.myisam和innode都是如此。
TRUNCATE TABLE table_name;
3.drop和create重建表方式重置自增列为0
DROP TABLE table_name;
CREATE TABLE table_name { … };