mysql怎么初始化自增值_MySQL 重置自增值

MySQL 重置自增值

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

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

无论何时向表中插入新行,MySQLAUTO_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;

+----+--------+

| id | name |

+----+--------+

| 1 | test 1 |

| 2 | test 2 |

| 3 | test 3 |

+----+--------+

3 rows in set (0.00 sec)

我们有三行,ID列的值分别为1,2和3.完美!是时候练习重置ID列的自动增量值了。

查看自动量值,红色标记的位置

mysql> show create table tmp \G;

*************************** 1. row ***************************

Table: tmp

Create Table: CREATE TABLE `tmp` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(45) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

1 row in set (0.02 sec)

使用ALTER TABLE语句

您可以使用ALTER TABLE  重置自动增量值的语句的语法如下:

ALTER TABLE table_name AUTO_INCREMENT = value;

您可以在ALTER TABLE子句后指定表名,并value在表达式中指定要重置的表名AUTO_INCREMENT=value。

请注意,value必须大于或等于自动增量列的当前最大值。

让我们删除tmp 表中最后一条id 值为3的记录:

DELETE FROM tmp

WHERE

ID = 3;

如果插入新行,MySQL将为新行的id列分配4  。但是,您可以使用以下ALTER TABLE  语句将MySQL生成的数字重置为3 :

ALTER TABLE tmp AUTO_INCREMENT = 3;

再查看一下自增值,红色标记:

mysql> show create table tmp \G;

*************************** 1. row ***************************

Table: tmp

Create Table: CREATE TABLE `tmp` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(45) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

1 row in set (0.02 sec)

现在,让我们尝试在tmp  表中插入一个新行并从中查询数据以查看效果:

INSERT INTO tmp(name)

VALUES ('MySQL example 3');

SELECT

*

FROM

tmp;

+----+-----------------+

| id | name |

+----+-----------------+

| 1 | test 1 |

| 2 | test 2 |

| 3 | MySQL example 3 |

+----+-----------------+

3 rows in set (0.02 sec)

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

使用TRUNCATE TABLE语句

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

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

TRUNCATE TABLE table_name;

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

使用DROP TABLE和CREATE TABLE语句

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

与TRUNCATE TABLE  语句一样,这些语句会删除表并重新创建它,因此,自动增量的值将重置为零。

DROP TABLE table_name;

CREATE TABLE table_name(...);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值