mysql自增属性

参考文章

https://www.php.cn/mysql-tutorials-489209.html

https://blog.csdn.net/qq_41045806/article/details/108310772

在Mysql中,可以为某一属性设置自增属性,可以很好地为我们解决属性值重复的问题。

在mysql中,使用auto_increment关键字来设置列属性自增

字段名 属性类型 AUTO_INCREMENT;//设置自增的起始值alter table 表名 auto_increment =;// 设置自增的步长alter table 表名 auto_increment_offset =;

前提条件:

  1. 一个表中只能有一个自增字段
  2. 该字段的数据类型必须是整数类型
  3. 该字段必须定义为键,如UNIQUE KEY, PRIMARY KEY
  4. 默认的自增起始值是1,步长是1
  5. 在插入时,若自增字段插入NULL、0、DEFAULT或省略该字段,则会使用自增值
  6. 自增时,会从该字段中的所有值中选一个最大值,然后加一个步长
  7. 若插入的值是一个具体的值,则不会使用自增值
  8. 用delete清空表时,自增值不会改变
  9. 用truncate清空表时,自增值还原

来看一个实例

// 创建一个表并设置自增idcreate table user(id int auto_increment primary key,name varchar(20));

修改起始值

如何修改的自增的起始值,有两种方式

  1. 第一种方式,在创建表时给出
create table user(id int auto_increment primary key,name varchar(20))auto_increment=100;
  1. 第二种方式
-- 设置表的自增起始值alter table user auto_increment= 100;

修改步长

步长的值的给出有两种方式,一种是基于会话的步长,另一种是基于全局的步长。

  1. 基于会话级别的
-- 查看会话自增值show session variables like 'auto_inc%';-- 设置自增步长为100set session auto_increment_increment = 100;-- 设置自增起始值为5set session auto_increment_offset = 5;

当本次的会话关闭后,再次连接数据库,这些属性就会恢复到默认值

设置完上面的代码后,再来试一下

  1. 全局级别
-- 查看全局自增值show global variables like 'auto_inc%';-- 设置全局自增步长set global auto_increment_increment = 100;-- 设置全局自增起始值set global auto_increment_offset = 9;

当会话和全局中都有同一个变量时,优先使用会话的