MySQl自增列起始与步长
自增初始值
一、alter的使用
默认初始值为1 步长为1的情况
1、建表
2、插入数据
当插入数据可以看到步长为1,起始值为1
3.增加一列数据时
默认在加上步长
4.删除后在原表后增加一列数据的情况
原表数据剔除后依旧在原基础上递增,这里和delete from 有关
5.修改auto_increment后,插入一行数据后,原表递增情况
alter table 表名 auto_Increment=n;
(1)、未改变:原表内有一行数据 auto_increment修改 初始值依旧为1,步长为1
(2)当原表内无数据时,auto_Increment alter后会发生改变
初始值为设定值,步长依旧为1
a、使用delete from 删除时
b、使用truncate table use 删除时
二、在新建表时设定auto_increment
(1)、建表时设定auto_increment 的值初始值可变,步长不变
步长
自增步长
基于会话级别:
- show session variables like 'auto_inc%"; --查看会话步长
- set session auto_increment_increment=4;
这里新建了一个初始值为1的值,通过set sessionauto_increment_increment 步 - set session auto_increment_offset=2; --设置自增起始值为2;
通过truncate table user_set 后重新设定起始值
可以看到这里起始值变成了2(由于上面设定了auto_increment_Increment的值,当前窗口口未结束,故步长还是为4)
基于全局级别
- show global variables like 'auto_inc%"; --查看全局步长
- set global auto_increment_increment=3; --设置全局步长为3 (关闭会话,再进行数据库操作不恢复到默认值)
- set global auto_increment_offset=2; --设置自增起始值为2;
总结:
设定自增初始值:
- alter table 表名 auto_Increment=n 通过alter方法设定初始值
- 如果原表有数据则自增初始值设定不生效
- 如果原表无数据,或者delete、truncate了则alter设定依旧生效,步长某人为1
- 建表时设定auto_increment=某值 即可设定初始值
- 注意delete from 表格后,自增初始值会紧跟上次数
- 使用truncate table 表格 则不会
- 通过set session auto_increment_Increment =某值,可以改变该窗口会话下的初始值,同样注意是否原数据,以及删除方式delete 与truncate的区别
- set global auto_increment_increment= 某值 ,改变全局步长,步推荐
设定自增步长:
- set session auto_increment_increment=4;
- set global auto_increment_increment=3; --设置全局步长为3 (关闭会话,再进行数据库操作不恢复到默认值)