Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL 序列

MySQL 序列(AUTO_INCREMENT)的使用示例

作者:愚戏师

本文主要介绍了MySQL 序列(AUTO_INCREMENT)的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

核心基础

  1. 本质:MySQL 无内置序列类型,通过AUTO_INCREMENT模拟自增数字序列;
  2. 约束:一张表仅 1 个自增主键列,列类型为整数(INT/BIGINT/UNSIGNED INT);
  3. 特性:删除数据后自增值不回退,手动修改易引发唯一性冲突。

一、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 序列 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文