mysql auto_increment自增初始值与步长

 

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 (关闭会话,再进行数据库操作不恢复到默认值)

posted @ 2020-11-22 15:37  yescarf  阅读(9488)  评论(0编辑  收藏  举报