ALTER TABLE 允話使用 ALTER COLUMN 、 CHANGE COLUMN 和 MODIFY COLUMN 修改列,這三種操做是不同的,下面作簡單的對比。spa
ALTER COLUMN:設置或刪除列的默認值。該操做會直接修改.frm文件而不涉及表數據。此操做很快it
ALTER TABLE MyTable ALTER COLUMN xxx SET DEFAULT 100;io
-- 共 0 行受到影響
--
-- 執行耗時 : 0.011 sec
-- 傳送時間 : 1.037 sec
-- 總耗時 : 1.048 sec
-- ---------------------------------------------------語法
CHANGE COLUMN: 列的重命名、列類型的變動以及列位置的移動(應該也會引發表的重建,很是慢)
語法:CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]命名
ALTER TABLE MyTable CHANGE COLUMN xxx xxx INT FIRST
-- 共 2000000 行受到影響
--
-- 執行耗時 : 12.037 sec
-- 傳送時間 : 1.074 sec
-- 總耗時 : 13.012 sec
-- ---------------------------------------------------數據
MODIFY COLUMN:除了列的重命名以外,他乾的活和CHANGE COLUMN是同樣的(會引發表的重建,很是慢)移動
ALTER TABLE MyTable MODIFY COLUMN xxx INT NOT NULL DEFAULT 101;
-- 共 2000000 行受到影響
--
-- 執行耗時 : 13.066 sec
-- 傳送時間 : 0.001 sec
-- 總耗時 : 13.067 sec
-- ---------------------------------------------------文件