MySQL ALTER TABLE: ALTER vs CHANGE vs MODIFY COLUMN

https://blog.csdn.net/dba_waterbin/article/details/17884549

写作背景

 

MySQL的ALTER TABLE操作常令DBA闻而变色,即使有Percona的OSC保驾护航,依然不堪轻易出手,但不是所有的ALTER TABLE都会引起表重建,从而需要花费数个小时甚至数天才能完成,本文对这3者作出简单区别,希望在万不得已时能是最后的一根稻草。

 

ALTER COLUMN

语法:

ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

作用:

设置或删除列的默认值。该操作会直接修改.frm文件而不涉及表数据。所以,这个操作非常快。

例子:

 

 

  1. mysql> alter table film alter column rental_duration set default 5;

  2. mysql> alter table film alter column rental_duration drop default;


 

CHANGE COLUMN

语法:

CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

作用:

列的重命名、列类型的变更以及列位置的移动

例子:

 
  1. ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;

  2. ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL AFTER baz;

 

MODIFY COLUMN

语法:
MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
作用:
除了列的重命名之外,他干的活和CHANGE COLUMN是一样的
例子:
ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;


 

 

 
  1. 参考资料:

  2. 1] http://dev.mysql.com/doc/refman/5.5/en/alter-table.html

  3. 2] http://hoelz.ro/wiki/mysql-alter-table-alter-change-modify-column

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值