如何在MySQL中设置初始值和自动递增?


288

如何设置从1001开始的MySQL表中“ id”列的初始值?

我想做一个插入 "INSERT INTO users (name, email) VALUES ('{$name}', '{$email}')";

无需为id列指定初始值。

Answers:


516

用这个:

ALTER TABLE users AUTO_INCREMENT=1001;

或者,如果您还没有添加ID列,也可以添加它

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);

2
我知道这是7年前的事情,但是...我可以对这个答案的各个部分进行解释吗?ADD INDEX在这里做什么?我是否必须在与该id列相同的语句中添加它,还是可以idCREATE TABLE块中然后定义该列ADD INDEX(id)
Michael Hoffmann

2
嘿,时间过去了...当然,如果可以的话,请在CREATE TABLE中定义它。答案的第二个“ ALTER TABLE”部分意味着您已经创建了一个表,并且该表可能已经部署在没有适当索引的位置,这是第一个“ ALTER TABLE”按预期工作所必需的。我希望这种解释会有所帮助。
Anatoliy

是的,确实有帮助。我正在查看一些以类似方式使用这些语句的示例,现在它们变得更有意义了。谢谢。
Michael Hoffmann

1
使用ADD INDEX的原因是,如果没有它,如果现有表上已有主键,则会得到there can be only one auto column and it must be defined as a key。您需要索引,因此它将是一个MUL密钥。
djsumdog

我在刚刚创建的未添加任何行的表上尝试了此操作。除非首先至少在表中添加了1行,否则这似乎不起作用。
所罗门·克洛森

54

MySQL-设置一个自1001开始的自动递增主键:

步骤1,建立表格:

create table penguins(
  my_id       int(16) auto_increment, 
  skipper     varchar(4000),
  PRIMARY KEY (my_id)
)

步骤2,设置自动递增主键的起始编号:

ALTER TABLE penguins AUTO_INCREMENT=1001;

步骤3,插入一些行:

insert into penguins (skipper) values("We need more power!");
insert into penguins (skipper) values("Time to fire up");
insert into penguins (skipper) values("kowalski's nuclear reactor.");

步骤4,解释输出:

select * from penguins

印刷品:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'

1
如果我想为特殊企鹅设置id <1000,该怎么办?
William Hu

1
您可以插入任何免费的id,只需将其放入列列表中即可:(insert into penguins (my_id, skipper) values(999, "explicit id");当使用0代替999自动增量值时将被插入)
hellcode

32

MySQL工作台

如果要避免编写sql,也可以在MySQL Workbench中通过右键单击表,在菜单中选择“ Alter Table ...”来完成。

当表结构视图打开时,转到选项卡“选项”(在视图的底部),然后将“自动增量”字段设置为下一个自动增量编号的值。

完成所有更改后,请不要忘记单击“应用”。

PhpMyAdmin:

如果使用的是phpMyAdmin,则可以在左侧导航栏中单击表,转到“操作”选项卡,然后在“表选项”下更改AUTO_INCREMENT值,然后单击“确定”。


1
您在谈论phpMyAdmin吗?
Pacerier,2015年

1
不,我认为他是在谈论MySQL Workbench。
土星

@Saturnian,是的,您是对的,我的意思是工作台。我将编辑我的帖子以澄清这一点。
Bojan Hrnkas 2015年

phpMyAdmin一步解决了一个自动增量问题,我尝试执行代码路由,但此方法不起作用。
tekagami

11

首先,您需要添加列以进行自动递增

alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST

首先查询添加列。现在,您必须重置自动增量初始值。所以用这个查询

alter table users AUTO_INCREMENT=1001

现在您的餐桌始于1001


6

您也可以在create table语句中进行设置。

`CREATE TABLE(...) AUTO_INCREMENT=1000`

5

另外,在PHPMyAdmin中,您可以从左侧(表列表)中选择表,然后从那里进行选择。
操作选项卡->表格选项-> AUTO_INCREMENT。

现在,设置您的值,然后按表选项框 x下的执行。



3

或者,如果您懒得编写SQL查询。那么此解决方案适合您。 在此处输入图片说明

  1. 打开phpMyAdmin
  2. 选择所需的
  3. 单击操作选项卡
  4. AUTO_INCREMENT设置所需的初始值
  5. 完成..!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.