資料表結構調整時,移除不再使用的欄位可釋放儲存空間並簡化維護。MySQL 透過 ALTER TABLE ... DROP COLUMN 實現,本文示範完整操作流程與注意事項。
ALTER TABLE <表名> DROP COLUMN <欄位名>;
mysql> SELECT * FROM test;
+------+--------+----------------------------------+------------+------------+------------+------------+
| t_id | t_name | t_password | t_birth | birth | birth1 | birth2 |
+------+--------+----------------------------------+------------+------------+------------+------------+
| 1 | name1 | 12345678901234567890123456789012 | NULL | 1990-01-01 | 0000-00-00 | 2013-01-01 |
| 2 | name2 | 12345678901234567890123456789012 | 2013-01-01 | NULL | 0000-00-00 | 2013-01-01 |
+------+--------+----------------------------------+------------+------------+------------+------------+
mysql> ALTER TABLE test DROP COLUMN birth1;
Query OK, 0 rows affected (0.13 sec)
mysql> SELECT * FROM test;
+------+--------+----------------------------------+------------+------------+------------+
| t_id | t_name | t_password | t_birth | birth | birth2 |
+------+--------+----------------------------------+------------+------------+------------+
| 1 | name1 | 12345678901234567890123456789012 | NULL | 1990-01-01 | 2013-01-01 |
| 2 | name2 | 12345678901234567890123456789012 | 2013-01-01 | NULL | 2013-01-01 |
+------+--------+----------------------------------+------------+------------+------------+
birth1 欄位已成功移除,其資料永久刪除且無法恢復。
COPY 算法(全表鎖),5.6+ 支援 INPLACE 但仍需短暫元數據鎖。大表建議使用 pt-online-schema-change。DROP PRIMARY KEY。mysqldump)或快照備份。ALTER TABLE test DROP COLUMN birth, DROP COLUMN birth2;
單條語句批次處理可減少資料表重建次數,提升效率。
欄位刪除屬於破壞性 DDL,請遵循「先測試、再備份、後執行」原則。配合版本控管工具記錄 Schema 變更,確保資料庫結構演進可追溯、可回滾。