MySQL 序列(AUTO_INCREMENT)的使用示例

 更新时间:2025年11月27日 08:16:38   作者:愚戏师  
本文主要介绍了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 序列 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决Navicat for MySQL 连接 MySQL 报2005错误的问题

    解决Navicat for MySQL 连接 MySQL 报2005错误的问题

    在本地MySQL的服务启动后,由于Navicat的一些功能需要联网才可以使用,今天重点给大家介绍Navicat for MySQL 连接 MySQL 报2005 -Unknown MySQL server host ‘localhost’(0)错误的情况与解决方法,感兴趣的朋友一起看看吧
    2021-05-05
  • MySQL查询性能优化的7个常见查询错误及解决方案

    MySQL查询性能优化的7个常见查询错误及解决方案

    数据库性能是Web应用和大型软件系统稳定运行的关键,即使是精心设计的应用,如果数据库查询效率低下,也会导致用户体验下降、系统资源浪费,甚至系统崩溃,本文将深入探讨MySQL查询优化,分析常见的查询错误,并提供提升数据库性能的实用技巧,需要的朋友可以参考下
    2025-04-04
  • MySQL 5.7.18 release版安装指南(含有bin文件版本)

    MySQL 5.7.18 release版安装指南(含有bin文件版本)

    这篇文章主要介绍了MySQL 5.7.18 release版安装指南,本文只谈论release版,即含有bin文件版本,需要的朋友可以参考下
    2017-04-04
  • SQL HAVING子句在GROUP BY中的条件筛选灵活运用

    SQL HAVING子句在GROUP BY中的条件筛选灵活运用

    这篇文章主要为大家介绍了SQL HAVING子句在GROUP BY中的条件筛选灵活运用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • MySQL多表连接查询高阶技巧和高阶函数示例详解

    MySQL多表连接查询高阶技巧和高阶函数示例详解

    这篇文章主要介绍了MySQL多表连接查询高阶技巧和高阶函数示例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-05-05
  • Mysql带返回值与不带返回值的2种存储过程写法

    Mysql带返回值与不带返回值的2种存储过程写法

    这篇文章主要介绍了Mysql带返回值与不带返回值的2种存储过程写法,需要的朋友可以参考下
    2017-10-10
  • MySQL Sleep连接过多问题解决方法

    MySQL Sleep连接过多问题解决方法

    这篇文章主要介绍了MySQL Sleep连接过多问题解决方法,MySQL Sleep连接过多一般多为客户端没关闭连接导致的,解决方法很简单,修改一下配置文件即可,需要的朋友可以参考下
    2015-05-05
  • MySQL之解决字符串数字的排序失效问题

    MySQL之解决字符串数字的排序失效问题

    这篇文章主要介绍了MySQL之解决字符串数字的排序失效问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • MySQL中创建表的三种方法汇总

    MySQL中创建表的三种方法汇总

    这篇文章主要介绍了MySQL中创建表的三种方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • MySQL的索引系统采用B+树的原因解析

    MySQL的索引系统采用B+树的原因解析

    索引是为了加速对表中数据行的检索而创建的一种分散的存储结构,这篇文章主要介绍了MySQL的索引系统采用B+树的原因解析,需要的朋友可以参考下
    2021-09-09

最新评论