首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 刪除資料表欄位實戰:ALTER TABLE DROP COLUMN 完整指南

     編輯:MySQL 資料庫相關知識

資料表結構調整時,移除不再使用的欄位可釋放儲存空間並簡化維護。MySQL 透過 ALTER TABLE ... DROP COLUMN 實現,本文示範完整操作流程與注意事項。

基本語法

ALTER TABLE <表名> DROP COLUMN <欄位名>;

實戰操作示範

1. 刪除前資料預覽

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 |
+------+--------+----------------------------------+------------+------------+------------+------------+

2. 執行刪除 birth1 欄位

mysql> ALTER TABLE test DROP COLUMN birth1;
Query OK, 0 rows affected (0.13 sec)

3. 刪除後驗證

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 欄位已成功移除,其資料永久刪除且無法恢復。

關鍵注意事項

  • 資料永久遺失:執行前務必確認欄位資料已無用或已備份/遷移。
  • 鎖表影響:MySQL 5.6 前為 COPY 算法(全表鎖),5.6+ 支援 INPLACE 但仍需短暫元數據鎖。大表建議使用 pt-online-schema-change。
  • 相依物件:若欄位被索引、外鍵、視覺、觸發器、存儲程序引用,需先移除相依物件。
  • 主鍵限制:無法直接刪除主鍵欄位,需先 DROP PRIMARY KEY。
  • 備份策略:生產環境操作前請執行邏輯備份(mysqldump)或快照備份。

批次刪除多欄位

ALTER TABLE test DROP COLUMN birth, DROP COLUMN birth2;

單條語句批次處理可減少資料表重建次數,提升效率。

欄位刪除屬於破壞性 DDL,請遵循「先測試、再備份、後執行」原則。配合版本控管工具記錄 Schema 變更,確保資料庫結構演進可追溯、可回滾。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved