Sum*_*pta 65 mysql sql alter-table
我在MySQL中用on column创建了一个表itemID
.创建表后,现在我想将此列更改为AUTOINCREMENT
.如何使用ALTER语句完成此操作?
表定义:
ALLITEMS (itemid int(10) unsigned, itemname varchar(50))
我使用以下代码,但它抛出错误:语法不正确.
ALTER TABLE allitems
MODIFY itemid INT(10) UNSIGNED AUTOINCREMENT;
Run Code Online (Sandbox Code Playgroud)
Thi*_*ode 93
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;
Run Code Online (Sandbox Code Playgroud)
我之前也CHANGE
和MODIFY
关键词混淆了:
ALTER TABLE ALLITEMS CHANGE itemid itemid INT(10)AUTO_INCREMENT PRIMARY KEY;
ALTER TABLE ALLITEMS MODIFY itemid INT(5);
Run Code Online (Sandbox Code Playgroud)
虽然我们在那里,但也请注意,AUTO_INCREMENT
也可以从预定义的数字开始:
ALTER TABLE tbl AUTO_INCREMENT = 100;
Run Code Online (Sandbox Code Playgroud)
ble*_*jzz 15
语法:
ALTER TABLE `table1` CHANGE `itemId` `itemId` INT( 11 ) NOT NULL AUTO_INCREMENT
Run Code Online (Sandbox Code Playgroud)
但是表需要一个定义的键(在itemId上是ex主键).
dee*_*see 13
ALTER TABLE `ALLITEMS`
CHANGE COLUMN `itemid` `itemid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
Run Code Online (Sandbox Code Playgroud)
将AUTO_INCREMENT PRIMARY KEY添加到OP现有表的基本语法:
ALTER TABLE allitems
MODIFY itemid INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY;
Run Code Online (Sandbox Code Playgroud)
或者对于新表,这是文档中的语法示例:
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)
陷阱和注意事项:
AUTO_INCREMENT
列必须有它的索引.(通常,你会希望它是PRIMARY KEY,但MySQL并不需要它.)AUTO_INCREMENT
专栏通常是个好主意UNSIGNED
.来自文档:
如果可能,请使用UNSIGNED属性以允许更大的范围.
CHANGE
or MODIFY
子句来创建一个列时AUTO_INCREMENT
(或者每当你使用CHANGE
or MODIFY
子句时),你应该小心地包括列的所有修饰符,比如,NOT NULL
或者UNSIGNED
,在你调用时显示在表定义中SHOW CREATE TABLE yourtable
.否则这些修饰符将丢失.小智 5
ALTER TABLE allitems
CHANGE itemid itemid INT(10) AUTO_INCREMENT;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
265496 次 |
最近记录: |