mysql alter modify 和 change的區別

del88發表於2024-11-24

在 MySQL 中,ALTER TABLE 語句用於修改現有的表結構。MODIFYCHANGEALTER 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

透過理解這些區別,你可以根據具體需求選擇合適的選項來修改表結構。

相關文章