MySQL RESET AUTO INCREMENT

MySQL RESET AUTO INCREMENT

Auto-increment是MySQL提供的一个有用的功能。它总是为每个新插入的行生成一个唯一的标识。通常,我们在表中的主键字段上使用auto-increment属性。每次我们向表中插入新记录时,MySQL会自动将值递增到auto-increment列。

例如 ,我们有一个已包含十行的表。下一步,如果我们在不给auto-increment列赋值的情况下添加一行新记录,MySQL会自动添加一个id=11的新行。

有时,我们需要删除这些行并重置auto-increment列,以便在进行下一次插入时,第一条记录的标识将具有主键值1。

MySQL允许多种方式来重置auto-increment列的值,这些方式包括:

  1. 使用ALTER TABLE语句
  2. 使用TRUNCATE TABLE语句
  3. 使用一对DROP TABLE和CREATE TABLE语句

首先,我们将创建一个名为” Animals “的表,并将 id列 赋予auto-increment属性。请参见下面的语句:

mysql> CREATE TABLE Animals(  
id int NOT NULL AUTO_INCREMENT,   
name CHAR(30) NOT NULL,   
PRIMARY KEY (id)); 

接下来,我们将按照如下方式向“Animals”表中插入一些示例数据:

mysql> INSERT INTO Animals (name) VALUES   
('Tiger'),('Dog'),('Penguin'),  
 ('Camel'),('Cat'),('Ostrich');

现在,我们将执行以下语句来验证插入操作:

mysql> SELECT * FROM Animals; 

我们应该获得以下输出结果。在插入语句中,我们没有为自增列指定任何值。但我们可以观察到在输出结果中,MySQL自动为该字段生成了一个唯一的数字,按序列顺序。

MySQL RESET AUTO INCREMENT

让我们以此表为例,详细讲解重置自增列值的方法。

使用ALTER TABLE语句

ALTER TABLE语句用于更改表名或任何表字段的名称。它还用于在表中添加、删除或重置现有列。MySQL还允许我们使用此语句在需要时重置自增列的值。

语法

以下是用于重置自增列值的ALTER TABLE语句的语法:

ALTER TABLE table_name AUTO_INCREMENT = value;

在这个句法中,我们首先在 ALTER TABLE 子句之后指定了表的名字。接下来,我们将要重置的值指定为 AUTO_INCREMENT = value 的形式。

需要注意的是,MySQL 不允许重置一个小于等于已经使用过的值的值。 例如,如果我们使用的是 InnoDB,该值不能小于或等于自增列的当前最大值。

对于 MyISAM 来说,如果指定的值小于或等于 auto_increment 列的最大值,该值将被重置为当前最大值加一。

对于 InnoDB 来说,如果指定的值小于 auto_increment 列的当前最大值,MySQL 不会抛出任何错误,当前序列也不会发生变化。

让我们删除表中最小 id 为 6 的行,如下所示:

mysql> DELETE FROM Animals WHERE id = 6;

如果我们添加一条新记录,MySQL将会为这条记录分配一个 id = 7 。但是如果我们想要将这一列重置为上一个值,我们可以使用 ALTER TABLE 语句,如下所示:

mysql> ALTER TABLE Animals AUTO_INCREMENT = 6;

如果我们将新记录插入到这个表中,MySQL会从6开始生成行id。执行以下查询:

mysql> INSERT INTO Animals (name)
VALUES ('Rabbit');

最后,查询表中的数据以查看效果。下面的输出更清楚地解释了,我们有六行数据,而不是七行,最后一个自增值为6。

MySQL RESET AUTO INCREMENT

使用TRUNCATE TABLE语句

在MySQL中,TRUNCATE TABLE语句完全删除表的数据,而不会删除表的结构,并且总是将自增列的值重置为零。

语法

以下语法演示了使用TRUNCATE TABLE语句重置自增列值:

TRUNCATE TABLE tab_name;

请注意,在执行TRUNCATE TABLE语句后,我们无法恢复从表中删除的数据。

使用DROP TABLE和CREATE TABLE语句

我们还可以使用一对DROP TABLE和CREATE TABLE语句来重置自动增量列的值。这种方法会永久性地删除表中的所有记录。

与TRUNCATE TABLE查询类似,DROP TABLE和CREATE TABLE语句对表进行先删除后重新创建的操作。因此,MySQL会将自动增量列的值重置为零。

DROP TABLE table_name;
CREATE TABLE table_name( fiels_name(s) datatypes);

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程