Skip to main content

如何使用AUTO_INCREMENT属性创建MySQL序列

创建MySQL序列

在MySQL中,序列是按升序生成的整数列表,即1、2、3……许多应用程序需要序列来生成唯一的编号,主要用于标识,例如CRM中的客户ID、HR中的员工编号和服务管理系统中的设备编号。

要在MySQL中自动创建序列,需要为列设置AUTO_INCREMENT属性,该列通常是主键列。

使用“自动增量”属性时,将应用以下规则:

创建MySQL序列示例

下面的语句创建了一个名为employees的表,该表的empno列是自动增量列:

CREATE TABLE employees (
emp_no INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
);

MySQL序列的工作原理

“自动增量”列具有以下属性:

为列设置自动增量属性后,可以通过各种方式重置自动增量值,例如使用ALTER TABLE语句。

让我们看一些例子,以更好地理解MySQL序列。

首先,在employees表中插入两个新行:

INSERT INTO employees(first_name,last_name)
VALUES('John','Doe'),
('Mary','Jane');

其次,从employees表中选择数据:

SELECT * FROM employees;

mysql sequence insert

第三,删除emp_no为2的第二名员工:

DELETE FROM employees 
WHERE emp_no = 2;

mysql sequence delete

第四,插入一名新员工:

INSERT INTO employees(first_name,last_name)
VALUES('Jack','Lee');

mysql sequence insert after delete

因为employees表的存储引擎是InnoDB,所以它不会重用删除的序列号。新的一排有emp_3号。

第五,将emp_no 3更新为1:

UPDATE employees 
SET
first_name = 'Joe',
emp_no = 1
WHERE
emp_no = 3;

MySQL为主键发出了重复项错误。我们来修吧。

UPDATE employees 
SET
first_name = 'Joe',
emp_no = 10
WHERE
emp_no = 3;

mysql sequence update

第六,将序列号更新为10后插入新员工:

INSERT INTO employees(first_name,last_name)
VALUES('Wang','Lee');

mysql sequence insert after update

最后一次插入的下一个序列号是数字4,因此MySQL对新行使用数字4,而不是11。

在本教程中,您学习了如何使用MySQL序列为主键列指定自动递增属性,从而为该列生成唯一的数字。