我知道,我们不能用MODIFY COLUMN语法重命名列,但是我们可以使用CHANGE COLUMN语法。
我的问题是:modify syntax的主要用途是什么?
例如:
ALATER TABLE tablename CHANGE col1 col1 INT(10) NOT NULL;而不是
ALATER TABLE tablename MODIFY col1 INT(10) NOT NULL;
编辑(问题取代)
MODIFY语法的主要用法是什么?CHANGE COLUMN而不是MODIFYCOLUMN发布于 2013-02-08 07:12:47
CHANGE COLUMN
如果您已经创建了您的MySQL数据库,并且在您的一个列被错误命名之后决定了,您不需要删除它并进行替换,您可以使用change列重新命名它。
ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;MODIFY COLUMN
这个命令执行CHANGE COLUMN所能做的一切,但是不重命名列的。如果需要调整MODIFY中的列的大小,可以使用MySQL SQL命令。通过这样做,您可以允许字符比以前更多或更少。不能使用MODIFY和其他重命名列。
ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;备注
ALTER TABLE用于更改表,以更改列名、大小、删除列等。如果没有ALTER TABLE命令的帮助,则不能使用CHANGE COLUMN和MODIFY COLUMN命令。
发布于 2019-10-28 09:35:35
不同之处在于您想要更改列名、列定义还是同时更改两者。
变化
可以更改列名或定义,或者两者都更改。
ALTER TABLE t1 CHANGE a b BIGINT NOT NULL
修改
可以更改列定义,但不能更改其名称。
ALTER TABLE t1 MODIFY b INT NOT NULL
重命名列(来自MySQL 8.0)
可以更改列名,但不能更改其定义。
ALTER TABLE t1 RENAME COLUMN b TO a
另外,CHANGE和MODIFY后面可以有一个可选的COLUMN关键字。
关于完整的解释:
发布于 2016-11-21 15:04:49
经过一个多小时的努力,我发现在auto_increment语句中添加一个非auto_increment列有一个不同之处:
alter table `doctor_experience` modify column `id` int(11) unsigned auto_increment工作,但声明:
alter table `doctor_experience` change column `id` `id` int(11) unsigned auto_increment 会报告一个错误。
https://stackoverflow.com/questions/14767174
复制相似问题