MySQL重置 AUTO_INCREMENT自动增量值

时间:2019-11-20 08:52:32  来源:igfitidea点击:

简介:在本教程中,我们将向您展示重置MySQL中AUTO_INCREMENT列的自动增量值的各种方法。

MySQL为您提供了一个有用的功能,称为自动增量。
您可以将AUTO_INCREMENT属性分配给表的列,以为新行生成唯一标识。
通常,您将AUTO_INCREMENT属性用于表的主键列。

每当您在表中插入新行时,MySQL都会自动将序列号分配给AUTO_INCREMENT列。

例如,如果表有八行,而您在未指定自动递增列的值的情况下插入新行,则MySQL将自动插入ID值为9的新行。

有时,您可能需要重置自动增量列的值,以便您插入表中的第一条记录的标识从一个特定的数字开始,例如1。

在MySQL中,您可以通过多种方式重置自动增量值。

MySQL重置自动增量值示例

首先,创建一个名为tmp的表,并将AUTO_INCREMENT属性分配给id主键列。

CREATE TABLE tmp (
  id INT 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;

我们有3行,其中ID列的值分别为1、2和3。
现在该练习重置ID列的自动增量值了。

使用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;

我们有三行,最后一个自动递增值为3而不是4,这是我们所期望的。

使用TRUNCATE TABLE语句

TRUNCATE TABLE语句从表中删除所有数据并将自动增量值重置为零。

以下说明了TRUNCATE TABLE语句的语法:

TRUNCATE TABLE table_name;

通过使用TRUNCATE TABLE语句,您将永久删除表中的所有数据并将自动增量值重置为零。

使用DROP TABLE和CREATE TABLE语句

您可以使用一对语句:DROP TABLE和CREATE TABLE重置自动增量列。
请注意,此方法从表中永久删除所有数据。

像TRUNCATE TABLE语句一样,这些语句会删除该表并重新创建它,因此,auto-increment的值将重置为零。

DROP TABLE table_name;
CREATE TABLE table_name(...);

在本教程中,您学习了如何以各种方式在MySQL中重置自动增量值。
第一种方法是可取的,因为这是最简单的方法,并且没有副作用。