在 MySQL 中重置自动增量

Preet Sanghavi 2022年5月13日
在 MySQL 中重置自动增量

本教程将介绍如何在 MySQL 表中重置自动增量。

大多数使用 MySQL 的企业和组织需要同时将值插入到多个表中。虽然不可能将插入的记录的所有字段都设为非空,但在根据特定条件获取这些记录时可能会导致错误或引发错误。

为了解决这个问题,MySQL 为我们提供了一个自动增量字段。它帮助我们在每次插入新记录时在 MySQL 中添加或更新特定值。它通常用于与主键关联的列。

随着这个变量的值不断增加,分析师必须控制这个变量的值。可以使用 ALTER TABLE 语句来完成。

让我们尝试更深入地理解这一点。

但是,在开始之前,我们会创建两个虚拟表来使用。在这里,我们创建了一个表 student_dates_1,以及几行。

-- create the table student_dates_3
CREATE TABLE student_dates_3(
  stu_id int NOT NULL AUTO_INCREMENT,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_date date,
  primary key(stu_id)
);

使用 INSERT 语句在 student_dates 表中插入条目

前面的查询创建了一个名为 student_dates 的表。现在在 INSERT 语句的帮助下,让我们尝试为一些学生添加数据。此操作可按如下方式进行:

-- insert rows to the table student_dates_3
INSERT INTO student_dates_3(stu_firstName,stu_date) 
 VALUES("Preet",STR_TO_DATE('24-May-2005', '%d-%M-%Y')),
 ("Dhruv",STR_TO_DATE('14-June-2001', '%d-%M-%Y')),
 ("Mathew",STR_TO_DATE('13-December-2020', '%d-%M-%Y')),
 ("Jeet",STR_TO_DATE('14-May-2003', '%d-%M-%Y')),
 ("Steyn",STR_TO_DATE('19-July-2002', '%d-%M-%Y'));

上述代码将在表 student_dates 中输入学生数据。

SELECT * from student_dates_3;

输出:

stu_id	stu_firstName	stu_date
1		Preet			2005-05-24
2		Dhruv			2001-06-14
3		Mathew			2020-12-13
4		Jeet			2003-05-14
5		Steyn			2002-07-19

重置 AUTO_INCREMENT 的值

要将 AUTO_INCREMENT 变量的值更新为特定值,可以使用以下语法。

ALTER TABLE name_of_the_table AUTO_INCREMENT = x;

在上述查询中,x 表示需要添加到所述表中的更新值。此逻辑可用于在以下查询的帮助下更新 student_dates_3 表的变量值。

ALTER TABLE student_dates_3 AUTO_INCREMENT = 100;

如果我们添加记录,主键 stu_id 会自动更新为 AUTO_INCREMENT 变量中设置的值。现在让我们在 student_dates_3 表中插入一个值。

-- insert rows to the table student_dates_3
INSERT INTO student_dates_3(stu_firstName,stu_date) 
 VALUES("Rutvik",STR_TO_DATE('16-January-2001', '%d-%M-%Y'));

我们将名为 Rutvik 的学生的 stu_id 设置为 100。这可以通过以下查询进行检查。

SELECT * from student_dates_3;

输出:

stu_id	stu_firstName	stu_date
1		Preet			2005-05-24
2		Dhruv			2001-06-14
3		Mathew			2020-12-13
4		Jeet			2003-05-14
5		Steyn			2002-07-19
6		Rutvik			2001-16-01

因此,在 ALTER TABLE 语句和 AUTO_INCREMENT 关键字的帮助下,我们可以有效地更新 AUTO_INCREMENT 字段的值,从而自动更新与主键关联的列中记录的值。

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub