首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“`MODIFY”vs“`CHANGE”

问“`MODIFY”vs“`CHANGE”
EN

Stack Overflow用户
提问于 2013-02-08 06:47:09
回答 5查看 53.3K关注 0票数 67

我知道,我们不能用MODIFY COLUMN语法重命名列,但是我们可以使用CHANGE COLUMN语法。

我的问题是:modify syntax的主要用途是什么?

例如:

代码语言:javascript
复制
ALATER TABLE tablename CHANGE col1 col1 INT(10) NOT NULL;

而不是

代码语言:javascript
复制
ALATER TABLE tablename MODIFY col1 INT(10) NOT NULL;

​

编辑(问题取代)

  • MODIFY语法的主要用法是什么?
  • 为什么我们必须使用CHANGE COLUMN而不是MODIFYCOLUMN
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-08 07:12:47

CHANGE COLUMN

如果您已经创建了您的MySQL数据库,并且在您的一个列被错误命名之后决定了,您不需要删除它并进行替换,您可以使用change列重新命名它。

代码语言:javascript
复制
ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;

MODIFY COLUMN

这个命令执行CHANGE COLUMN所能做的一切,但是不重命名列的。如果需要调整MODIFY中的列的大小,可以使用MySQL SQL命令。通过这样做,您可以允许字符比以前更多或更少。不能使用MODIFY和其他重命名列。

代码语言:javascript
复制
ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;

备注

ALTER TABLE用于更改表,以更改列名、大小、删除列等。如果没有ALTER TABLE命令的帮助,则不能使用CHANGE COLUMN和MODIFY COLUMN命令。

票数 93
EN

Stack Overflow用户

发布于 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关键字。

关于完整的解释:

  1. MySQL 5.7文档-重命名、重新定义和重新排序列
  2. MySQL 8.0文档-重命名、重新定义和重新排序列
票数 33
EN

Stack Overflow用户

发布于 2016-11-21 15:04:49

经过一个多小时的努力,我发现在auto_increment语句中添加一个非auto_increment列有一个不同之处:

代码语言:javascript
复制
alter table `doctor_experience` modify column `id` int(11) unsigned auto_increment

工作,但声明:

代码语言:javascript
复制
alter table `doctor_experience` change column `id` `id` int(11) unsigned auto_increment 

会报告一个错误。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14767174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档