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

bbt*_*ang 264 mysql insert auto-increment

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

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

不指定id列的初始值.

Ana*_*liy 476

用这个:

ALTER TABLE users AUTO_INCREMENT=1001;
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE users ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);
Run Code Online (Sandbox Code Playgroud)

  • 我意识到这是7年前,但是......我可以得到这个答案部分的解释吗?"ADD INDEX"在这里做什么?我是否必须在与`id`列相同的语句中添加它,或者我可以在`CREATE TABLE`块中定义`id`列然后`ADD INDEX(id)`? (2认同)
  • 嘿,时间过去......当然,如果你能够做到这一点,请在CREATE TABLE中定义它.答案的第二个"ALTER TABLE"部分意味着您已经创建了一个表,并且它可能已经部署在没有正确索引的地方,这是第一个"ALTER TABLE"按预期工作所必需的.我希望这个解释有所帮助. (2认同)
  • 使用 ADD INDEX 的原因是,如果没有它,如果现有表上已有主键,您将得到“只能有一个自动列,并且必须将其定义为键”。您需要索引,因此它将是一个 MUL 键。 (2认同)

Eri*_*ski 51

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

第1步,创建表:

create table penguins(
  my_id       int(16) auto_increment, 
  skipper     varchar(4000),
  PRIMARY KEY (my_id)
)
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE penguins AUTO_INCREMENT=1001;
Run Code Online (Sandbox Code Playgroud)

第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.");
Run Code Online (Sandbox Code Playgroud)

第4步,解释输出:

select * from penguins
Run Code Online (Sandbox Code Playgroud)

打印:

'1001', 'We need more power!'
'1002', 'Time to fire up'
'1003', 'kowalski\'s nuclear reactor'
Run Code Online (Sandbox Code Playgroud)

  • 如果我想为特殊企鹅设置id<1000,我该怎么办? (3认同)
  • 您可以插入任何空闲 id,只需将其放入列列表中:`insert into penguins (my_id, skipper) values(999, "explicit id");`(当使用 `0` 而不是 `999` 时,自动递增值将被插入) (2认同)

Boj*_*kas 31

MySQL Workbench

如果你想避免编写sql,你也可以在MySQL Workbench中右键单击表格,在菜单中选择"Alter Table ...".

当表格结构视图打开时,转到选项卡"选项"(位于视图的下方),并将"自动增量"字段设置为下一个自动增量编号的值.

完成所有更改后,请不要忘记点击"应用".

phpMyAdmin的:

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


Vla*_*cky 22

使用 CREATE TABLE 语句

CREATE TABLE my_table (
  id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  PRIMARY KEY (id)
) AUTO_INCREMENT = 100;
Run Code Online (Sandbox Code Playgroud)

或使用 ALTER TABLE 语句

ALTER TABLE my_table AUTO_INCREMENT = 200;
Run Code Online (Sandbox Code Playgroud)

  • 提示,如果将其设置为 1,它将默认位于现有最高 id 之上 (2认同)

Joh*_*ohn 11

首先,您需要添加自动增量列

alter table users add column id int(5) NOT NULL AUTO_INCREMENT FIRST
Run Code Online (Sandbox Code Playgroud)

此查询首先添加列.现在您必须重置自动增量初始值.所以使用此查询

alter table users AUTO_INCREMENT=1001
Run Code Online (Sandbox Code Playgroud)

现在你的表以1001开头


Aru*_*kar 9

为此你必须设置AUTO_INCREMENT

ALTER TABLE tablename AUTO_INCREMENT = <INITIAL_VALUE>
Run Code Online (Sandbox Code Playgroud)

例子

ALTER TABLE tablename AUTO_INCREMENT = 101
Run Code Online (Sandbox Code Playgroud)


osp*_*der 9

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

`CREATE TABLE(...) AUTO_INCREMENT=1000`
Run Code Online (Sandbox Code Playgroud)


Lax*_*kar 6

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

  1. 打开phpMyAdmin
  2. 选择所需的
  3. 单击操作选项卡
  4. AUTO_INCREMENT设置所需的初始值
  5. 完毕..!


Mos*_*lah 5

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

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