語法規則
ALTER TABLE tbl_name
ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
| ADD [COLUMN] (col_name column_definition, ...)
關鍵結論
- 單列添加:支援
FIRST(作第一列)或 AFTER existing_col(指定列之後)。
- 多列添加:使用括號語法
ADD (col1 def1, col2 def2, ...) 時,不支援 FIRST/AFTER,新列只能依次追加到表尾。
示例
-- ✅ 單列指定位置
ALTER TABLE t1 ADD COLUMN c_new INT AFTER c_exist;
-- ✅ 單列置首
ALTER TABLE t1 ADD COLUMN c_first INT FIRST;
-- ❌ 多列指定位置(語法錯誤)
ALTER TABLE t1 ADD (c1 INT AFTER c2, c3 INT); -- ERROR 1064
-- ✅ 多列追加尾部
ALTER TABLE t1 ADD (c1 INT, c2 VARCHAR(20));
工程建議
- 需精確控制列順序時,分多條單列 ALTER 執行(注意每條 ALTER 可能鎖表/重建,評估業務窗口)。
- 或採用 影子表遷移:
CREATE TABLE new_t LIKE t; ALTER TABLE new_t ADD ...; INSERT INTO new_t SELECT ... FROM t; RENAME TABLE t TO old_t, new_t TO t;
- 列順序對性能影響極小(除非涉及覆蓋索引列順序),業務邏輯勿過度依賴
SELECT * 的列序。