如何更改 MySQL AUTO_INCREMENT 的起始数字?
mysqlmysqli database
MySQL AUTO_INCREMENT 值从 1 开始,但我们可以通过以下两种方式更改它 −
借助 ALTER TABLE 查询
我们可以使用 ALTER TABLE 查询更改 AUTO_INCREMENT 的起始值,如下所示 −
ALTER TABLE table_name AUTO_INCREMENT = value;
示例
假设我们创建了一个表,其中列"id"为 AUTO_INCREMENT。现在,如果我们将值插入其中,则序列号将从 1 开始,如您在以下查询中看到的那样 −
mysql> Create Table EMP(id int NOT NULL PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10)); Query OK, 0 rows affected (0.07 sec) mysql> Insert Into EMP(Name) Values('Aryan'); Query OK, 1 row affected (0.02 sec) mysql> Insert Into EMP(Name) Values('Yash'); Query OK, 1 row affected (0.04 sec) mysql> Select * from EMP; +----+-------+ | id | NAME | +----+-------+ | 1 | Aryan | | 2 | Yash | +----+-------+ 2 rows in set (0.00 sec)
现在,如果我们想随后更改序列号,则需要使用 ALTER TABLE 查询来更改 AUTO_INCREMENT 的值,如下所示 −
mysql> Alter table emp auto_increment = 10; Query OK, 2 rows affected (0.25 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Insert Into EMP(Name) Values('Daksh'); Query OK, 1 row affected (0.03 sec) mysql> Insert Into EMP(Name) Values('Shayra'); Query OK, 1 row affected (0.06 sec) mysql> Select * from EMP; +----+--------+ | id | NAME | +----+--------+ | 1 | Aryan | | 2 | Yash | | 10 | Daksh | | 11 | Shayra | +----+--------+ 4 rows in set (0.00 sec)
上述查询已将 AUTO_INCREMENT 的值更改为 10,因此在之后插入新值时,我们将获得从 10 开始的序列号。
借助 CREATE TABLE 查询
我们还可以在创建表时更改 AUTO_INCREMENT 值。可以通过使用 CREATE TABLE 查询指定 AUTO_INCREMENT 的值来完成,如下所示 −
CREATE TABLE (Column1 INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Column2 data type) AUTO_INCREMENT = value;
示例
mysql> Create Table EMP1(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(10)) AUTO_INCREMENT = 100; Query OK, 0 rows affected (0.11 sec)
上面的查询在创建表时将 AUTO_INCREMENT 的值指定为 100。现在,如果我们将值插入其中,则序列号将从 100 开始,而不是默认值 1,如下所示−
mysql> Insert into emp1(name) values('Sohan'); Query OK, 1 row affected (0.04 sec) mysql> Insert into emp1(name) values('Harshit'); Query OK, 1 row affected (0.05 sec) mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | +-----+---------+ 2 rows in set (0.00 sec)