我在MySQL中创建了一个列为itemID的表。创建表之后,现在我想将此列更改为AUTOINCREMENT。
itemID
AUTOINCREMENT
如何使用ALTER语句?
表格定义:ALLITEMS (itemid int(10) unsigned, itemname varchar(50))我使用下面的代码,但它抛出一个语法错误
ALLITEMS (itemid int(10) unsigned, itemname varchar(50))
错误:语法错误。
ALTER TABLE allitems MODIFY itemid INT(10) UNSIGNED AUTOINCREMENT;
7vux5j2d1#
CREATE TABLE ALLITEMS( itemid INT(10)UNSIGNED, itemname VARCHAR(50) ); ALTER TABLE ALLITEMS CHANGE itemid itemid INT(10)AUTO_INCREMENT PRIMARY KEY; DESC ALLITEMS; INSERT INTO ALLITEMS(itemname) VALUES ('Apple'), ('Orange'), ('Banana'); SELECT * FROM ALLITEMS;
我以前也对CHANGE和MODIFY关键字感到困惑:
CHANGE
MODIFY
ALTER TABLE ALLITEMS CHANGE itemid itemid INT(10)AUTO_INCREMENT PRIMARY KEY; ALTER TABLE ALLITEMS MODIFY itemid INT(5);
当我们在那里的时候,还要注意AUTO_INCREMENT也可以以预定义的数字开始:
AUTO_INCREMENT
ALTER TABLE tbl AUTO_INCREMENT = 100;
x4shl7ld2#
语法:
ALTER TABLE `table1` CHANGE `itemId` `itemId` INT( 11 ) NOT NULL AUTO_INCREMENT
但是表需要一个定义好的键(例如itemId上的主键)。
zphenhs43#
ALTER TABLE `ALLITEMS` CHANGE COLUMN `itemid` `itemid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
afdcj2ne4#
将AUTO_INCREMENT PRIMARY KEY添加到OP的现有表的基本语法:
ALTER TABLE allitems MODIFY itemid INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY;
或者对于一个新表,下面是the docs的语法示例:
CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) );
陷阱和注意事项:
UNSIGNED
如果可能,请使用UNSIGNED属性以允许更大的范围。
NOT NULL
SHOW CREATE TABLE yourtable
inb24sb25#
ALTER TABLE allitems CHANGE itemid itemid INT(10) AUTO_INCREMENT;
bakd9h0s6#
ALTER TABLE tblcatalog CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT FIRST;
jw5wzhpr7#
ALTER TABLE employees CHANGE id id int AUTO_INCREMENT PRIMARY KEY;
zfciruhq8#
要重置自动增量的值,请执行以下操作:
ALTER TABLE [table_name] AUTO_INCREMENT = start_value;
ojsjcaue9#
ALTER TABLE t_name modify c_name INT(10) AUTO_INCREMENT PRIMARY KEY;
9条答案
按热度按时间7vux5j2d1#
我以前也对
CHANGE
和MODIFY
关键字感到困惑:当我们在那里的时候,还要注意
AUTO_INCREMENT
也可以以预定义的数字开始:x4shl7ld2#
语法:
但是表需要一个定义好的键(例如itemId上的主键)。
zphenhs43#
afdcj2ne4#
将AUTO_INCREMENT PRIMARY KEY添加到OP的现有表的基本语法:
或者对于一个新表,下面是the docs的语法示例:
陷阱和注意事项:
AUTO_INCREMENT
列必须有索引。(通常,你会希望它是主键,但MySQL不要求这样。AUTO_INCREMENT
列设置为UNSIGNED
。从文档:如果可能,请使用UNSIGNED属性以允许更大的范围。
CHANGE
或MODIFY
子句来创建列AUTO_INCREMENT
时(或者实际上 * 无论何时 * 使用CHANGE
或MODIFY
子句),您应该小心地包含该列的所有修饰符,如NOT NULL
或UNSIGNED
,这些修饰符在您调用SHOW CREATE TABLE yourtable
时显示在表定义中。否则这些修饰符将丢失。inb24sb25#
bakd9h0s6#
jw5wzhpr7#
ALTER TABLE employees CHANGE id id int AUTO_INCREMENT PRIMARY KEY;
zfciruhq8#
要重置自动增量的值,请执行以下操作:
ojsjcaue9#