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

相关文章

  • mysql数据库表增添字段,删除字段,修改字段的排列等操作

    mysql数据库表增添字段,删除字段,修改字段的排列等操作

    这篇文章主要介绍了mysql数据库表增添字段,删除字段,修改字段的排列等操作,修改表指的是修改数据库之后中已经存在的数据表的结构
    2022-07-07
  • MySQL Workbench安装及使用详解

    MySQL Workbench安装及使用详解

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性,这篇文章主要介绍了MySQL Workbench安装及使用,需要的朋友可以参考下
    2022-10-10
  • 浅谈mysql中多表不关联查询的实现方法

    浅谈mysql中多表不关联查询的实现方法

    下面小编就为大家带来一篇浅谈mysql中多表不关联查询的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • SPSS连接mysql数据库的超详细操作教程

    SPSS连接mysql数据库的超详细操作教程

    小编最近在学习SPSS,在为数据库建立连接时真的踩了很多坑,这篇文章主要给大家介绍了关于SPSS连接mysql数据库的超详细操作教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • MySQL中将一列以逗号分隔的值行转列的实现

    MySQL中将一列以逗号分隔的值行转列的实现

    这篇文章主要介绍了MySQL中将一列以逗号分隔的值行转列的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 关于mysql合并表的详细介绍

    关于mysql合并表的详细介绍

    本篇文章是对mysql中的合并表进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Windows 64位重装MySQL的教程(Zip版、解压版MySQL安装)

    Windows 64位重装MySQL的教程(Zip版、解压版MySQL安装)

    这篇文章主要介绍了Windows 64位,重装MySQL的方法(Zip版、解压版MySQL安装),本文给大家介绍的非常详细,具有一定的参考借鉴价值需要的朋友可以参考下
    2020-02-02
  • Mysql 5.7.17 winx64在win7上的安装教程

    Mysql 5.7.17 winx64在win7上的安装教程

    本文给大家介绍Mysql 5.7.17 winx64在win7上的安装教程,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-04-04
  • MySQL数据库分区功能的使用教程

    MySQL数据库分区功能的使用教程

    这篇文章主要介绍了MySQL数据库分区功能的使用教程,文中特别讲解了MySQL分表和分区的区别以及联系,需要的朋友可以参考下
    2016-05-05
  • Mysql中的表分区使用解读

    Mysql中的表分区使用解读

    这篇文章主要介绍了Mysql中的表分区使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05

最新评论