在本教學中,我們將向您展示如何重置MySQL中AUTO_INCREMENT
列的自動增量值。
MySQL提供了一個有用的功能,稱為自動增量。 您可以將自動遞增屬性分配給表的列,以生成新行的唯一標識。 通常,使用表的主鍵列的自動遞增屬性。
無論何時在表中插入新行,MySQL會自動將序列值分配給自動增量列。
例如,如果表有8
行,並插入新行而不指定自動增量列的值,MySQL將自動插入一個id
為9
的新行。
有時,可能需要重置自動增量列的值,以便插入到表中的第一個記錄的標識從特定的數位開始,例如重置為1
。
在MySQL中,可以以各種方式重置自動增量值。
首先,建立一個名為tmp
的表,並將AUTO_INCREMENT
屬性分配給id
主鍵列。
USE testdb;
CREATE TABLE tmp (
id int(11) 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
所上查詢結果所示,總共有三行,ID
列的值分別為:1
,2
和3
,現在,來看看如何重置ID
列的自動增量值。
MySQL通過使用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;
執行上面查詢語句,得到以下結果 -
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | test 1 |
| 2 | test 2 |
| 4 | MySQL example 3 |
+----+-----------------+
3 rows in set
現在,表中有三行記錄,最後一個自動遞增值為3
而不是4
,這是像我們所預期的那樣。
MySQL使用TRUNCATE TABLE語句重置自動增量值
TRUNCATE TABLE語句刪除表的所有資料,並將auto_increment
值重置為0
。
下面說明了TRUNCATE TABLE
語句的語法:
TRUNCATE TABLE table_name;
通過使用TRUNCATE TABLE
語句,可以刪除表的所有資料,並將自動遞增值重置為零。
MySQL使用DROP TABLE和CREATE TABLE語句重置自動增量值
您可以使用一對語句:DROP TABLE和CREATE TABLE來重置自動增量列。
像TRUNCATE TABLE
語句一樣,這些語句刪除刪除表並重新建立它,因此,自動增量的值將重置為0
。
DROP TABLE table_name;
CREATE TABLE table_name(...);
在本教學中,您已經學會了如何以各種方式重置MySQL中的自動增量值。 第一種方法是最好的,因為它是最簡單的方法,沒有副作用。
《MySQL通過使用語句重置自動增量值》這個小節最後的結果錯誤,id應該為3而不為4. 提交時間:2019-09-09