本教程介绍如何使用SQL ALTER TABLE
更改数据库中现有表的结构。
创建新表后,您可能希望更改其结构,因为业务需求会发生变化。 要修改表的结构,请使用ALTER TABLE
语句。 ALTER TABLE
语句用于对现有表执行以下操作:
- 使用
ADD
子句添加新列。 - 使用
MODIFY
子句修改列的属性,例如:约束,默认值等。 - 使用
DROP
子句删除列。
我们将在以下部分详细学习每个操作。
1. SQL ALTER TABLE ADD列
以下语句说明了带有ADD
子句的ALTER TABLE
,该子句用于向表中添加一个或多个列。
ALTER TABLE table_name
ADD new_colum data_type column_constraint [AFTER existing_column];
要向表中添加一个或多个列,需要执行以下步骤:
- 首先,在
ALTER TABLE
子句之后指定要添加table_name
,表示列所在的表。 - 其次,将新列定义放在
ADD
子句之后。 如果要在表中指定新列的顺序,可以使用可选子句AFTER existing_column
。
注意,如果省略
AFTER
子句,则将在表的最后一列之后添加新列。
下面来看看如何将一些新列添加到在create table教程中创建的courses
表的示例。
以下语句将一个名称为credit_hours
的新列添加到courses
表中。
ALTER TABLE courses ADD credit_hours INT NOT NULL;
使用单个ALTER TABLE
语句向表中添加多个列。 例如,以下语句一次将fee
和max_limit
列添加到courses
表中,并将这些列放在course_name
列之后。
ALTER TABLE courses
ADD fee NUMERIC (10, 2) AFTER course_name,
ADD max_limit INT AFTER course_name;
2. SQL ALTER TABLE MODIFY列
MODIFY子句用于更改现有列的某些属性,例如,NOT NULL
,UNIQUE和数据类型。
以下语句显示带有MODIFY
子句的ALTER TABLE
语句的语法。
ALTER TABLE table_name
MODIFY column_definition;
请注意,应该修改没有数据的表的列的属性。 因为更改已包含数据的表中列的属性可能会导致永久性数据丢失。
例如,如果列的数据类型为VARCHAR
,并且将其更改为INT
,则数据库系统必须将数据从VARCHAR
转换为INT
。 如果转换失败,数据库系统可能会使用列的默认值,这可能与预期不符。
以下ALTER TABLE MODIFY
语句将fee
列的属性更改为NOT NULL
。
ALTER TABLE courses
MODIFY fee NUMERIC (10, 2) NOT NULL;
3. SQL ALTER TABLE DROP列
当表的列已过时且未被任何其他数据库对象(如触发器,视图,存储过程和存储过程)使用时,需要将其从表中删除。
要删除一个或多个列,请使用以下语法:
ALTER TABLE table_name
DROP column_name,
DROP colum_name,
...
例如,要删除courses
表中的fee
列,请使用以下语句。
ALTER TABLE courses DROP COLUMN fee;
若要同时删除多个列,请使用以逗号(,
)分隔的多个DROP COLUMN
子句。
例如,以下语句删除courses
表中的max_limit
和credit_hours
。
ALTER TABLE courses
DROP COLUMN max_limit,
DROP COLUMN credit_hours;
在本教程中,我们逐步学习了如何使用SQL ALTER TABLE
语句在表中添加,修改和删除一个或多个列。