MySQl自增列起始与步长

自增初始值

一、alter的使用

默认初始值为1 步长为1的情况

1、建表

MySQL 设置当前表自增步长 mysql设置自增初始值和步长_自增

2、插入数据

当插入数据可以看到步长为1,起始值为1

 

3.增加一列数据时

默认在加上步长

 

4.删除后在原表后增加一列数据的情况

原表数据剔除后依旧在原基础上递增,这里和delete from 有关

 

 

5.修改auto_increment后,插入一行数据后,原表递增情况

alter table 表名 auto_Increment=n;

(1)、未改变:原表内有一行数据 auto_increment修改 初始值依旧为1,步长为1

MySQL 设置当前表自增步长 mysql设置自增初始值和步长_数据_02

 

(2)当原表内无数据时,auto_Increment alter后会发生改变

初始值为设定值,步长依旧为1

a、使用delete from 删除时

 

MySQL 设置当前表自增步长 mysql设置自增初始值和步长_数据_03

 

 

 

b、使用truncate table use 删除时

 

MySQL 设置当前表自增步长 mysql设置自增初始值和步长_自增_04

 

 

 

二、在新建表时设定auto_increment

(1)、建表时设定auto_increment 的值初始值可变,步长不变

 

MySQL 设置当前表自增步长 mysql设置自增初始值和步长_建表_05

 

 

步长

自增步长
基于会话级别:
  • show session variables like 'auto_inc%"; --查看会话步长

 

MySQL 设置当前表自增步长 mysql设置自增初始值和步长_建表_06

 

 

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