重置自动增量值
在本教程中,我们将向您展示如何重置MySQL中AUTO_INCREMENT列的自动增量值。
MySQL提供了一个有用的功能,称为自动增量。 您可以将自动递增属性分配给表的列,以生成新行的唯一标识。 通常,使用表的主键列的自动递增属性。
无论何时在表中插入新行,MySQL会自动将序列值分配给自动增量列。
例如,如果表有8行,并插入新行而不指定自动增量列的值,MySQL将自动插入一个id9的新行。
有时,可能需要重置自动增量列的值,以便插入到表中的第一个记录的标识从特定的数字开始,例如重置为1
在MySQL中,可以以各种方式重置自动增量值。

MySQL重置自动增量值示例

首先,创建一个名为tmp的表,并将AUTO_INCREMENT属性分配给id主键列。
USE testdb;
CREATE TABLE tmp (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(45) DEFAULT NULL,
PRIMARY KEY (id)
);
其次,将一些样本数据插入tmp表中:
INSERT INTO tmp(name)
VALUES('test 1'),
('test 2'),
('test 3');
第三步,查询tmp表验证插入操作:
SELECT * FROM tmp;
+----+--------+
| id | name |
+----+--------+
| 1 | test 1 |
| 2 | test 2 |
| 3 | test 3 |
+----+--------+
3 rows in set
所上查询结果所示,总共有三行,ID列的值分别为:123,现在,来看看如何重置ID列的自动增量值。
MySQL通过使用ALTER TABLE语句重置自动增量值
可以使用ALTER TABLE语句重置自动增量值。重置自动增量的值的ALTER TABLE语句的语法如下:
ALTER TABLE table_name AUTO_INCREMENT = value;
您可以在ALTER TABLE子句之后指定表名,并在表达式AUTO_INCREMENT = value中指定要重置的值。
请注意,该值必须大于或等于自动增量列的当前最大值。
我们删除tmp表中的id值为3的最后一个记录:
DELETE FROM tmp WHERE ID = 3;
如果插入一行,MySQL将把4分配给新行的id列。 但是,可以使用ALTER TABLE语句将由MySQL生成的数字重置为3,如下所示:
ALTER TABLE tmp AUTO_INCREMENT = 3;
现在,尝试向tmp表中插入一个新行并从中查询数据以查看效果:
INSERT INTO tmp(name)
VALUES ('MySQL example 3');
SELECT
*
FROM
tmp;
执行上面查询语句,得到以下结果 -
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | test 1 |
| 2 | test 2 |
| 4 | MySQL example 3 |
+----+-----------------+
3 rows in set
现在,表中有三行记录,最后一个自动递增值为3而不是4,这是像我们所预期的那样。
MySQL使用TRUNCATE TABLE语句重置自动增量值
TRUNCATE TABLE语句删除表的所有数据,并将auto_increment值重置为0。 下面说明了TRUNCATE TABLE语句的语法:
TRUNCATE TABLE table_name;
通过使用TRUNCATE TABLE语句,可以删除表的所有数据,并将自动递增值重置为零。
MySQL使用DROP TABLE和CREATE TABLE语句重置自动增量值
您可以使用一对语句:DROP TABLECREATE TABLE来重置自动增量列。
TRUNCATE TABLE语句一样,这些语句删除删除表并重新创建它,因此,自动增量的值将重置为0
DROP TABLE table_name;
CREATE TABLE table_name(...);
在本教程中,您已经学会了如何以各种方式重置MySQL中的自动增量值。 第一种方法是最好的,因为它是最简单的方法,没有副作用。
Copy link