在專案開發迭代過程中,資料庫結構調整是常態。MySQL 提供 ALTER TABLE 語句支援在不重建資料表的前提下新增欄位,本文說明標準語法與關鍵注意事項。
ALTER TABLE `資料庫名`.`資料表名` ADD COLUMN `欄位名` 資料型別 [預設值] [AFTER `既有欄位名`];
ALTER TABLE `mydb`.`orders` ADD COLUMN `PROCID` VARCHAR(6) DEFAULT '' AFTER `PPIDChanged`;
AFTER `PPIDChanged`:指定新欄位插入位置,若省略則預設附加至表尾。DEFAULT '':設定預設值為空字串,避免既有資料行出現 NULL 導致應用層邏輯錯誤。| 型別 | 適用場景 |
|---|---|
| VARCHAR(n) | 可變長度字串,如代碼、名稱 |
| INT / BIGINT | 整數型 ID、計數器、外鍵 |
| DECIMAL(p,s) | 金額、精確數值運算 |
| DATETIME / TIMESTAMP | 時間戳記,TIMESTAMP 具時區感知 |
| JSON | 半結構化資料(MySQL 5.7+) |
pt-online-schema-change 等線上變更工具。DESC `資料庫名`.`資料表名`; -- 或 SHOW COLUMNS FROM `資料庫名`.`資料表名` LIKE 'PROCID';
輸出應包含新欄位定義,確認型別、預設值、位置皆符合預期。