MySQL中ALTER ,CHANGE , MODIFY

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中ALTER ,CHANGE , MODIFY相关的知识,希望对你有一定的参考价值。

参考技术A 将表格修改为下面第二个表格形式。

用一条ALTER语句实现。

CHANGE:如果我们不只是修改单一列,而是用一条语句改变两个列,我们需要修改列的名称,同时更改他们的数据类型,这时就需要我们用到关键字CHANGE,可以在一条语句中放入多个CHANGE,在中间加上分隔的逗号即可。
比如原来的表两列,类型为VARCHAR(50),和VARCHAR(10),现在不止要更改列名,还要更改这两列的类型。

程序如下:

MODIFY:使用它可以只修改列的类型而不会干涉它的名称,假设要把proj_desc列的字符长度修改为VARCHAR(120)以容纳更多的说明文字,只要这么做就可以。

总结如下;
(1)既更改列名也更改类型,用CHANGE
(2)只修改类型,用MODIFY,但这种方法比较慢,我们用另一种方法直接修改.frm文件,而不改动表本身。

MySql 修改表结构时 ALTER,MODIFY,CHANGE的区别

原文链接:https://blog.csdn.net/magicio/article/details/90813513

根据MySql文档,我们知道在修改表内某一列的属性的时候,MySql支持3中语法结构:

ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name  
    ALTER [COLUMN] col_name SET DEFAULT literal | DROP DEFAULT
ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name  
    CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
ALTER [ONLINE|OFFLINE] [IGNORE] TABLE tbl_name 
    MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]

这里比较一下这三种语法的不同之处,以及什么情况下应该选用什么语法

语法功能说明
ALTER只能更改列的默认值
CHANGE可以重命名列或者修改列的定义标准SQL的扩展
MODIFY可以更改列的定义,但不能更改列的名称兼容Oracle的扩展

通过文档介绍的功能,我们就基本能够判断处该使用使用哪种语法,CHANGE功能最强大,什么情况下都可以使用(达到预期的效果)。但是还有一个区别:

  • ALTER 语法只是修改 .frm 文件,不会去更新表中的数据;
  • MODIFY和CHANGE在更新表结构的时候重新插入表中的数据,因此比较耗费时间。

所以,当只需要修改某一列的默认值的时候,优先选择用ALTER,需要修改列的名称用CHANGE,只修改列的定义用MIODIFY

如果修改的列上有索引,修改完后最好重建一下索引

以上是关于MySQL中ALTER ,CHANGE , MODIFY的主要内容,如果未能解决你的问题,请参考以下文章

MySql 修改表结构时 ALTER,MODIFY,CHANGE的区别

MySql 修改表结构时 ALTER,MODIFY,CHANGE的区别

MYSQL:alter语句中change和modify的区别

mysql中的update(更新)与alter(更改)以及 change和modify的区别

MySQL表更改ALTER,CHANGE,MODIFY的区别

MySQL:ALTER COLUMNMODIFY COLUMN 和 CHANGE COLUMN