摘要:本教程向您展示如何在数据库中使用 SQL ALTER TABLE
来更改现有表的结构。
在 创建新表 后,您可能想要更改其结构,因为业务需求发生了变化。若要修改表的结构,请使用 ALTER TABLE
语句。ALTER TABLE
语句允许您对现有表执行以下操作
- 使用
ADD
子句添加新列。 - 使用
MODIFY
子句修改列的属性,例如约束、默认值等。 - 使用
DROP
子句删除列。
我们将在以下部分详细探讨每个操作。
SQL ALTER TABLE ADD 列
以下语句阐释了带有 ADD
子句的 ALTER TABLE
,允许您向表中添加一列或多列。
ALTER TABLE table_name
ADD new_colum data_type column_constraint [AFTER existing_column];
Code language: SQL (Structured Query Language) (sql)
若要向表中添加一列或多列,您需要执行以下步骤
- 首先,指定要在
ALTER TABLE
子句后用table_name
表示的要添加列的表。 - 其次,将新列定义放在
ADD
子句后。如果您希望指定列在表中的顺序,则可以使用可选子句AFTER existing_column
。
请注意,如果您省略了 AFTER
子句,所有新列都将在表的最后一列后面添加。
让我们看一下在 创建表教程 中创建的 courses
表中添加新列的一些示例

以下语句向 courses
表添加名为 credit_hours
的新列。
ALTER TABLE courses ADD credit_hours INT NOT NULL;
Code language: SQL (Structured Query Language) (sql)
您可以使用单个 ALTER TABLE
语句向表中添加多列。例如,以下语句向 courses
表中添加 fee
和 max_limit
列,并将这些列放在 course_name
列之后。
ALTER TABLE courses
ADD fee NUMERIC (10, 2) AFTER course_name,
ADD max_limit INT AFTER course_name;
Code language: SQL (Structured Query Language) (sql)
SQL ALTER TABLE MODIFY 列
MODIFY
子句允许您更改现有列的一些属性,例如 NOT NULL
、UNIQUE
和 数据类型。
以下语句向您展示带有 DROP
从句的 ALTER TABLE
语句的语法。
ALTER TABLE table_name
MODIFY column_definition;
Code language: SQL (Structured Query Language) (sql)
请注意,您应修改没有数据的表的列属性。因为修改已包含数据的表中的列属性可能导致永久数据丢失。
例如,如果列的数据类型为 VARCHAR,
且您将其更改为 INT
,数据库系统必须将数据从 VARCHAR
转换为 INT.
如果转换失败,数据库系统可能使用该列的默认值,而这可能不是您预期的。
以下 ALTER TABLE MODIFY
语句将 fee
列的属性更改为 NOT NULL.
ALTER TABLE courses
MODIFY fee NUMERIC (10, 2) NOT NULL;
Code language: SQL (Structured Query Language) (sql)
SQL ALTER TABLE DROP 列
当表的列已过时并且不被任何其他数据库对象(例如 触发器、视图、存储的和存储的过程)使用时,您需要从表中将其删除。
若要删除一列或多列,请使用以下语法
ALTER TABLE table_name
DROP column_name,
DROP colum_name,
...
Code language: SQL (Structured Query Language) (sql)
例如,若要删除 courses
表的 fee
列,请使用以下语句。
ALTER TABLE courses DROP COLUMN fee;
Code language: SQL (Structured Query Language) (sql)
若要同时删除多列,请使用多个 DROP COLUMN
从句,并用逗号 (,) 分隔。
例如,以下语句删除了 courses
表的 max_limit
和 credit_hours
。
ALTER TABLE courses
DROP COLUMN max_limit,
DROP COLUMN credit_hours;
Code language: SQL (Structured Query Language) (sql)
在本教程中,您已逐步了解如何使用 SQL ALTER TABLE
语句添加、修改和删除表中的一列或多列。