mysql修改AUTO_INCREMENT的值
可以看到id字段此时的自增是从1000开始的,并且已经增长到了1002select * from k1; +------+--------+
|> +------+--------+
| 1000 | xiaoke |
| 1001 | xiaoke |
| 1002 | xiaoke |
+------+--------+
查看一下此时建表语句
show create table k1; +-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| k1 | CREATE TABLE `k1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1003 DEFAULT CHARSET=utf8 |
这个时候,我们想把id设置为从1开始,使用以下语句:
alter table k1 AUTO_INCREMENT=1; Query OK, 0 rows affected (0.00 sec)
Records: 0Duplicates: 0Warnings: 0
重新插入一条语句
insert into k1 (name) values ('xiaoke'); 这时,我们重新查看一下k1表的内容,已经有了4条内容
select * from k1; +------+--------+
|> +------+--------+
| 1000 | xiaoke |
| 1001 | xiaoke |
| 1002 | xiaoke |
| 1003 | xiaoke |
+------+--------+
可以看到,k1表的id字段并没有从我们设置的1开始!!
我们再来一次,设置表的字段从10001开始,使用以下语句:
alter table k1 AUTO_INCREMENT=; 我们重新查看一下k1表的内容
select * from k1; +-------+--------+
|> +-------+--------+
|1000 | xiaoke |
|1001 | xiaoke |
|1002 | xiaoke |
|1003 | xiaoke |
| 10001 | xiaoke |
可以看到,这次我们的设置已经生效了,那么经过验证说明,通过
alter table TABLE_NAME AUTO_INCREMENT=n 设置表的自增的初始值,只能设置AUTO_INCREMENT=比id字段的最大值还要大,才可以成功,不可以设置AUTO_INCREMENT比当前的id值小!
在id字段已经有数据的情况下,如果我们想要AUTO_INCREMENT从1开始,我们可以删除id字段,然后重新添加一次id字段,可使用以下语句
alter table k1 drop id;
alter table k1 add id int(11) not null primary key AUTO_INCREMENT first;
select * from k1;
+----+--------+
|> +----+--------+
|1 | xiaoke |
|2 | xiaoke |
|3 | xiaoke |
|4 | xiaoke |
|5 | xiaoke |
+----+--------+
页:
[1]