ALTER TABLE 是修改表結構的核心命令,支援增刪改列、調整順序、修改屬性等操作。本文聚焦列級變更。
ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name];
FIRST:插入為第一列AFTER col_name:插入在指定列之後示例:在 username 後添加 email VARCHAR(100)
ALTER TABLE t_user ADD COLUMN email VARCHAR(100) AFTER username;

ALTER TABLE tbl_name ADD [COLUMN] (col_def1, col_def2, ...);
示例:一次性添加 phone、address
ALTER TABLE t_user ADD COLUMN (phone CHAR(11), address VARCHAR(200));

ALTER TABLE tbl_name DROP [COLUMN] col_name;
示例:刪除 address
ALTER TABLE t_user DROP COLUMN address;

MySQL 不直接支援 RENAME COLUMN(8.0+ 支援),傳統做法是 CHANGE 或 MODIFY,也可通過「刪除+添加」實現結構調整。
-- 將 email 刪除,改為 email_new VARCHAR(150) 放在 username 後
ALTER TABLE t_user DROP COLUMN email, ADD COLUMN email_new VARCHAR(150) AFTER username;

-- 修改列類型/默認值/註釋,保留列名
ALTER TABLE tbl_name MODIFY COLUMN col_name new_definition;
-- 修改列名 + 類型/屬性
ALTER TABLE tbl_name CHANGE COLUMN old_name new_name new_definition;
-- 修改列順序
ALTER TABLE tbl_name MODIFY COLUMN col_name col_definition AFTER other_col;
ALTER TABLE 會鎖表、拷貝數據,耗時長,建議:pt-online-schema-change(Percona Toolkit)在線變更ALGORITHM=INPLACE vs COPY 模式SHOW CREATE TABLE tbl_name 確認結構掌握 ADD/DROP/MODIFY/CHANGE 四大子句,應對 90% 表結構變更場景。