在 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
。
- 如果你只需要修改列的属性(如数据类型、默认值等),并且不需要改变列名,可以使用
通过理解这些区别,你可以根据具体需求选择合适的选项来修改表结构。
标签:salary,modify,MODIFY,ALTER,修改,CHANGE,TABLE,alter,change From: https://www.cnblogs.com/del88/p/18565664