MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL 重置自增

自动递增是MySQL提供的有用功能。它总是为表中的每个新插入的行 生成唯一的身份。通常,我们对表中的主键字段使用自动递增属性。每次我们将新记录插入到表中时,MySQL都会自动将值增加到auto-increment列。
例如,我们有一个已经包含十行的表。接下来,如果我们添加新行而不将值赋给自动增量列,则MySQL会自动添加具有 id = 11 的新行。
有时,我们需要删除这些行并重置auto-increment列,以便当我们在表中进行下一次插入时,第一条记录的标识将具有主键值1。
MySQL提供了多种方法来重置auto-增加列值。这些方法是:
使用ALTER TABLE语句 使用TRUNCATE TABLE语句 使用一对DROP TABLE和CREATE TABLE语句
首先,我们将创建一个名为" 动物"的表,并为 id列分配自动递增属性。请参阅以下语句:
mysql> CREATE TABLE Animals(  
id int NOT null AUTO_INCREMENT,   
name CHAR(30) NOT null,   
PRIMARY KEY (id)); 
接下来,我们将一些示例数据插入"动物"表中,如下所示:
mysql> INSERT INTO Animals (name) VALUES   
('Tiger'),('Dog'),('Penguin'),  
 ('Camel'),('Cat'),('Ostrich');
现在,我们将执行以下语句来验证插入操作:
mysql> SELECT * FROM Animals; 
我们应该得到以下输出。在insert语句中,我们没有为auto-increment列指定任何值。但是我们可以在输出中看到MySQL会自动为该字段按顺序生成一个唯一的数字。
 MySQL Reset Auto-Increment
让我们以此表为例来详细演示重置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列的最大值,则该值将重置为当前的最大值加1。
对于 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而不是7。
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);

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4