ALTER TABLE 是修改表結構的核心指令,支援單次執行多個動作 (以逗號分隔)。本文透過實戰案例,涵蓋增欄、改型別、重命名欄位/表、加索引/主鍵、刪欄、加 AUTO_INCREMENT 等高頻操作。
-- 1. 新增欄位 (指定位置)
ALTER TABLE TestResult ADD xinlinDoc LONGBLOB;
ALTER TABLE TestResult ADD xinlinDocName VARCHAR(50);
-- 2. 重命名表
ALTER TABLE t1 RENAME t2;
-- 3. 修改欄位型別 + 重命名欄位
ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
-- 4. 新增 TIMESTAMP 欄位
ALTER TABLE t2 ADD d TIMESTAMP;
-- 5. 加索引 + 設主鍵
ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
-- 6. 刪除欄位
ALTER TABLE t2 DROP COLUMN c;
-- 7. 新增 AUTO_INCREMENT 主鍵 (需先加索引、NOT NULL)
ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);
ALTER TABLE t ACTION1, ACTION2, ...; 原子執行,減少鎖表時間。MODIFY:只改型別/屬性,名稱不變。CHANGE:改名稱 + 型別/屬性 (舊名 新名 型別)。ADD INDEX / ADD PRIMARY KEY / ADD UNIQUE 可同步建立。AUTO_INCREMENT 欄位**必須被索引**且 NOT NULL。| 操作 | 語法範例 |
|---|---|
| 新增欄位 (指定位置) | ALTER TABLE t ADD col INT AFTER other_col; |
| 修改欄位型別 | ALTER TABLE t MODIFY col BIGINT NOT NULL; |
| 重命名欄位 | ALTER TABLE t CHANGE old_col new_col INT; |
| 刪除欄位 | ALTER TABLE t DROP COLUMN col; |
| 重命名表 | ALTER TABLE t1 RENAME t2; |
| 加主鍵 | ALTER TABLE t ADD PRIMARY KEY (id); |
| 加唯一索引 | ALTER TABLE t ADD UNIQUE uk_name (name); |
| 刪除索引 | ALTER TABLE t DROP INDEX idx_name; |