ALTER TABLE tbl CHANGE old_col_name new_col_name data_type [constraints];
關鍵點:CHANGE 必須指定**新字段名**和**完整類型定義**,即使類型不變也要寫上。
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 | |
+------------+-------------+------+-----+---------+-------+
mysql> ALTER TABLE test CHANGE t_name t_name_new VARCHAR(20);
Query OK, 0 rows affected (0.11 sec)
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 | |
+------------+-------------+------+-----+---------+-------+
| 命令 | 用途 | 是否可改名 | 語法 |
|---|---|---|---|
CHANGE | 重命名 + 可選修改類型/約束 | 是 | CHANGE old new type |
MODIFY | 僅修改類型/約束,不可改名 | 否 | MODIFY col type |
CHANGE,並完整寫出類型(長度、字符集、校對規則)Unknown column 錯誤