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 = 值;
前提条件:
- 一个表中只能有一个自增字段
- 该字段的数据类型必须是整数类型
- 该字段必须定义为键,如UNIQUE KEY, PRIMARY KEY
- 默认的自增起始值是1,步长是1
- 在插入时,若自增字段插入NULL、0、DEFAULT或省略该字段,则会使用自增值
- 自增时,会从该字段中的所有值中选一个最大值,然后加一个步长
- 若插入的值是一个具体的值,则不会使用自增值
- 用delete清空表时,自增值不会改变
- 用truncate清空表时,自增值还原
来看一个实例
// 创建一个表并设置自增idcreate table user(id int auto_increment primary key,name varchar(20));
修改起始值
如何修改的自增的起始值,有两种方式
- 第一种方式,在创建表时给出
create table user(id int auto_increment primary key,name varchar(20))auto_increment=100;
- 第二种方式
-- 设置表的自增起始值alter table user auto_increment= 100;
修改步长
步长的值的给出有两种方式,一种是基于会话的步长,另一种是基于全局的步长。
- 基于会话级别的
-- 查看会话自增值show session variables like 'auto_inc%';-- 设置自增步长为100set session auto_increment_increment = 100;-- 设置自增起始值为5set session auto_increment_offset = 5;
当本次的会话关闭后,再次连接数据库,这些属性就会恢复到默认值
设置完上面的代码后,再来试一下
- 全局级别
-- 查看全局自增值show global variables like 'auto_inc%';-- 设置全局自增步长set global auto_increment_increment = 100;-- 设置全局自增起始值set global auto_increment_offset = 9;
当会话和全局中都有同一个变量时,优先使用会话的