ITPub博客

首页 > 数据库 > Oracle > MySQL ALTER TABLE: ALTER vs CHANGE vs MODIFY COLUMN

MySQL ALTER TABLE: ALTER vs CHANGE vs MODIFY COLUMN

原创 Oracle 作者:幕南风 时间:2014-07-03 14:13:11 0 删除 编辑
写作背景

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

ALTER COLUMN

语法:
ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
作用:
设置或删除列的默认值。该操作会直接修改.frm文件而不涉及表数据。所以,这个操作非常快。
例子:
mysql> alter table film alter column rental_duration set default 5;
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]

作用:

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

例子:

ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;
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;


2014-1-5
Good Luck!

<!-- Baidu Button BEGIN -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1208252/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 我为什么不向你推荐书籍
下一篇: MySQL Schema设计(一)范式不能当'范'吃
请登录后发表评论 登录
全部评论
腾讯数据库工程师

注册时间:2012-05-10

最新文章