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

MySQL 修改欄位名稱完整教學:ALTER TABLE CHANGE 實戰

     編輯:MySQL 資料庫相關知識

資料庫演進過程中,欄位重命名是常見維護操作。MySQL 使用 ALTER TABLE ... CHANGE 語法同時支援修改欄位名稱、資料型別與屬性。本文以實際操作示範完整流程。

語法結構

ALTER TABLE <表名> CHANGE <舊欄位名> <新欄位名> <資料型別> [屬性...];

注意:即使僅改名,仍須重新指定完整資料型別與屬性(如 VARCHAR(20)),否則會導致型別遺失。

操作實戰:將 t_name 改為 t_name_new

1. 確認原始表結構

mysql> DESCRIBE test;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| t_id       | int(11)     | YES  |     | NULL    |       |
| t_name     | varchar(20) | YES  |     | NULL    |       |
| t_password | char(32)    | YES  |     | NULL    |       |
| t_birth    | date        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

2. 執行重命名

mysql> ALTER TABLE test CHANGE t_name t_name_new VARCHAR(20);
Query OK, 0 rows affected (0.11 sec)

3. 驗證修改結果

mysql> DESCRIBE test;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| t_id       | int(11)     | YES  |     | NULL    |       |
| t_name_new | varchar(20) | YES  |     | NULL    |       |
| t_password | char(32)    | YES  |     | NULL    |       |
| t_birth    | date        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

常見陷阱與最佳實務

  • 型別不一致:若原欄位為 VARCHAR(50) NOT NULL DEFAULT '',CHANGE 時必須完整保留 VARCHAR(50) NOT NULL DEFAULT '',否則屬性會重置。
  • 外鍵關聯:若欄位被外鍵引用,需先刪除外鍵再修改,最後重建。
  • 應用程式同步:修改後務必同步更新 ORM 實體、查詢 SQL、API 契約等程式碼。
  • 大表線上變更:生產環境大表建議使用 pt-online-schema-change 或 gh-ost 避免鎖表阻塞。

替代語法:RENAME COLUMN (MySQL 8.0+)

ALTER TABLE test RENAME COLUMN t_name TO t_name_new;

僅改名時更簡潔,不需重複指定型別,推薦優先使用。

欄位重命名屬於 DDL 操作,執行前請務必備份並規劃回滾方案。掌握 CHANGE 與 RENAME COLUMN 兩種語法,可靈活應對不同版本與場景需求。

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