加入收藏 | 设为首页 | 会员中心 | 我要投稿 上海站长网 (https://www.021zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL序列(自动增长)

发布时间:2022-09-30 07:33:10 所属栏目:MySql教程 来源:转载
导读: 在本教程中,我们将向您展示如何使用MySQL序列为表的ID列自动生成唯一编号。
创建MySQL序列
在MySQL中MySQL 序列使用,序列是以升序生成的整数列表,即1,2,3 ...许多应用程序需要序列来生成

在本教程中,我们将向您展示如何使用MySQL序列为表的ID列自动生成唯一编号。

创建MySQL序列

在MySQL中MySQL 序列使用,序列是以升序生成的整数列表,即1,2,3 ...许多应用程序需要序列来生成主要用于识别的唯一数字,例如:CRM中的客户ID,HR中的员工编号,服务器管理系统的设备编号等。

要自动在MySQL中创建序列,可以在列上设置AUTO_INCREMENT属性,这通常是主键列。

使用AUTO_INCREMENT属性时,将应用以下规则:

创建MySQL序列示例

以下语句创建一个名为employees的表,其emp_no列为AUTO_INCREMENT列:

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

MySQL序列如何工作

AUTO_INCREMENT列具有以下属性:

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

我们来看一下一些例子来更好地了解MySQL序列。

第一步,在employees表中插入两行:

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

第二步,从employees表中查询选择数据:

mysql> SELECT * FROM employees;
+--------+------------+-----------+
| emp_no | first_name | last_name |
+--------+------------+-----------+
|      1 | John       | Doe       |
|      2 | Mary       | Jane      |
+--------+------------+-----------+
2 rows in set

第三步,删除emp_no为2的第二个员工信息:

mysql> DELETE FROM employees
WHERE emp_no = 2;
Query OK, 1 row affected
mysql> SELECT * FROM employees;
+--------+------------+-----------+
| emp_no | first_name | last_name |
+--------+------------+-----------+
|      1 | John       | Doe       |
+--------+------------+-----------+
1 row in set

第四步,插入新员工,并查询最后一位员工信息(emp_no):


mysql> INSERT INTO employees(first_name,last_name)
VALUES('Jack','Lee');
Query OK, 1 row affected
mysql> SELECT * FROM employees;
+--------+------------+-----------+
| emp_no | first_name | last_name |
+--------+------------+-----------+
|      1 | John       | Doe       |
|      3 | Jack       | Lee       |
+--------+------------+-----------+
2 rows in set

因为employees表的存储引擎是InnoDB,它不会重复使用已删除的序列号。 新行使用emp_no的值是3。

第五步,将emp_no = 3已存在新员工更新为emp_no = 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> UPDATE employees
SET first_name = 'Joe',
    emp_no = 10
WHERE emp_no = 3;
Query OK, 1 row affected
Rows matched: 1  Changed: 1  Warnings: 0
mysql> SELECT * FROM employees;
+--------+------------+-----------+
| emp_no | first_name | last_name |
+--------+------------+-----------+
|      1 | John       | Doe       |
|     10 | Joe        | Lee       |
+--------+------------+-----------+
2 rows in set

上面步骤中,将序列号更新为10。

第六,插入新员工数据 -

mysql> INSERT INTO employees(first_name,last_name)
VALUES('Wang','Lee');
Query OK, 1 row affected
mysql> SELECT * FROM employees;
+--------+------------+-----------+
| emp_no | first_name | last_name |
+--------+------------+-----------+
|      1 | John       | Doe       |
|      4 | Wang       | Lee       |
|     10 | Joe        | Lee       |
+--------+------------+-----------+

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

在本教程中,您已经学习了如何使用MySQL序列为主键列生成唯一的编号,方法是为列设置AUTO_INCREMENT属性。

(编辑:上海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!