CREATE TABLE testalter_tbl (i INT, c CHAR(1)); SHOW COLUMNS FROM testalter_tbl;
-- 刪除列 ALTER TABLE testalter_tbl DROP i; -- 添加列(默認加到末尾) ALTER TABLE testalter_tbl ADD i INT; -- 指定位置:FIRST(首列)、AFTER col_name(指定列後) ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT FIRST; ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT AFTER c;
注意:移動現有列需「先刪後加」。
-- MODIFY:只改類型/屬性,不改名 ALTER TABLE testalter_tbl MODIFY c CHAR(10); -- CHANGE:改名 + 改定義(舊名 新名 新定義) ALTER TABLE testalter_tbl CHANGE i j BIGINT; -- 只改類型不改名:舊名 新名相同 ALTER TABLE testalter_tbl CHANGE j j INT;
-- 修改為 NOT NULL 並設置默認值 ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100; -- 單獨修改默認值 ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; SHOW COLUMNS FROM testalter_tbl; -- Default 顯示 1000 -- 刪除默認值 ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
ALTER TABLE testalter_tbl ENGINE = InnoDB; SHOW TABLE STATUS LIKE 'testalter_tbl'\G
ALTER TABLE testalter_tbl RENAME TO alter_tbl;
pt-online-schema-change 或 gh-ost。ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4 會重建表並轉換數據,ALTER TABLE t CHARSET=utf8mb4 只改默認值。