MySQL 序列(AUTO_INCREMENT)的使用示例
作者:愚戏师
本文主要介绍了MySQL 序列(AUTO_INCREMENT)的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
核心基础
- 本质:MySQL 无内置序列类型,通过
AUTO_INCREMENT模拟自增数字序列; - 约束:一张表仅 1 个自增主键列,列类型为整数(INT/BIGINT/UNSIGNED INT);
- 特性:删除数据后自增值不回退,手动修改易引发唯一性冲突。
一、AUTO_INCREMENT 基础使用
1. 创建含自增列的表
CREATE TABLE insect (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id),
name VARCHAR(30) NOT NULL,
date DATE NOT NULL,
origin VARCHAR(30) NOT NULL
);
2. 插入数据(省略自增列值)
INSERT INTO insect (id,name,date,origin) VALUES (NULL,'housefly','2001-09-10','kitchen');
二、自增值获取
| 场景 | 核心语句 / 方法 |
|---|---|
| 客户端查刚插入值 | SELECT LAST_INSERT_ID(); |
| 客户端查表当前值 | SHOW TABLE STATUS LIKE '表名';(看 Auto_increment 列) |
三、序列操作
1. 重置序列(谨慎:并发插入易混乱)
ALTER TABLE insect DROP id; ALTER TABLE insect ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id);
2. 设置序列起始值
| 操作时机 | 语句示例 |
|---|---|
| 建表时指定 | CREATE TABLE insect (...) engine=innodb auto_increment=100 charset=utf8; |
| 建表后修改 | ALTER TABLE insect AUTO_INCREMENT = 100; |
四、扩展:自定义序列管理(批量 / 自定义幅度)
1. 建序列管理表
DROP TABLE IF EXISTS sequence;
CREATE TABLE sequence (
name VARCHAR(50) NOT NULL,
current_value INT NOT NULL,
increment INT NOT NULL DEFAULT 1,
PRIMARY KEY (name)
) ENGINE=InnoDB;2. 核心函数
| 函数名 | 作用 | 关键逻辑 |
|---|---|---|
| currval | 查序列当前值 | SELECT current_value FROM sequence WHERE name = seq_name; |
| nextval | 查下一个值(自动累加) | UPDATE sequence SET current_value += increment WHERE name = seq_name; |
| setval | 设序列当前值 | UPDATE sequence SET current_value = value WHERE name = seq_name; |
3. 测试示例
INSERT INTO sequence VALUES ('TestSeq', 0, 1); -- 添加序列
SELECT SETVAL('TestSeq', 10); -- 设初始值10
SELECT CURRVAL('TestSeq'); -- 查当前值
SELECT NEXTVAL('TestSeq'); -- 查下一个值复习速记提示
- 自增列必为整数 + 主键,一张表仅一个;
- 重置序列需删列重建,避免并发操作;
- 自定义序列适合批量管理、自定义自增幅度场景。
到此这篇关于MySQL 序列(AUTO_INCREMENT)的使用示例的文章就介绍到这了,更多相关MySQL 序列 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
