在 MySQL 中,ALTER TABLE
語句用於修改現有的表結構。MODIFY
和 CHANGE
是 ALTER TABLE
語句中的兩個常用選項,它們都用於修改列的定義,但有一些關鍵的區別。
MODIFY
- 用途:
MODIFY
主要用於修改現有列的定義,比如改變資料型別、預設值、是否允許 NULL 等。 - 語法:
ALTER TABLE table_name MODIFY COLUMN column_name new_definition;
- 示例:
在這個例子中,ALTER TABLE employees MODIFY COLUMN salary DECIMAL(10, 2) NOT NULL;
salary
列的資料型別被修改為DECIMAL(10, 2)
,並且設定為不允許NULL
。
CHANGE
- 用途:
CHANGE
不僅用於修改現有列的定義,還可以用於重新命名列。 - 語法:
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name new_definition;
- 示例:
在這個例子中,ALTER TABLE employees CHANGE COLUMN salary base_salary DECIMAL(10, 2) NOT NULL;
salary
列被重新命名為base_salary
,同時資料型別也被修改為DECIMAL(10, 2)
,並且設定為不允許NULL
。
對比總結
-
修改列定義:
MODIFY
只能修改列的定義(資料型別、預設值等)。CHANGE
既可以修改列的定義,也可以重新命名列。
-
語法區別:
MODIFY
語法中不需要指定列的新名稱。CHANGE
語法中必須指定列的新名稱(即使名稱沒有變化)。
-
使用場景:
- 如果你只需要修改列的屬性(如資料型別、預設值等),並且不需要改變列名,可以使用
MODIFY
。 - 如果你需要修改列名或者同時修改列名和屬性,則必須使用
CHANGE
。
- 如果你只需要修改列的屬性(如資料型別、預設值等),並且不需要改變列名,可以使用
透過理解這些區別,你可以根據具體需求選擇合適的選項來修改表結構。