摘要:在本教程中,您将学习如何使用 MySQL ALTER TABLE
语句添加列、更改列、重命名列、删除列和重命名表。
设置样本表
让我们创建一个名为vehicles
的表来进行演示:
CREATE TABLE vehicles (
vehicleId INT,
year INT NOT NULL,
make VARCHAR(100) NOT NULL,
PRIMARY KEY(vehicleId)
);
Code language: SQL (Structured Query Language) (sql)

MySQL ALTER TABLE
– 将列添加到表中
ALTER TABLE ADD
语句允许您向表中添加一列或多列。
1)向表中添加一列
要将列添加到表中,请使用ALTER TABLE ADD
语法:
ALTER TABLE table_name
ADD
new_column_name column_definition
[FIRST | AFTER column_name]
Code language: SQL (Structured Query Language) (sql)
在这个语法中:
table_name
– 指定要在ALTER TABLE
关键字后添加新列的表的名称。-
new_column_name
– 指定新列的名称。 -
column_definition
– 指定新列的数据类型、最大大小和列约束 FIRST | AFTER column_name
指定新列在表中的位置。您可以在现有列 (ATER column_name
) 之后添加列或将其添加为第一列 (FIRST
)。如果省略此子句,则该列将附加到表的列列表的末尾。
以下示例使用ALTER TABLE ADD
语句在vehicles
表的末尾添加一列:
ALTER TABLE vehicles
ADD model VARCHAR(100) NOT NULL;
Code language: SQL (Structured Query Language) (sql)
该语句显示了vehicles
表的列列表:
DESCRIBE vehicles;
Code language: SQL (Structured Query Language) (sql)

从输出中可以清楚地看出,列model
已添加到vehicles
表中。
2)向表中添加多列
要将多列添加到表中,请使用以下形式的ALTER TALE ADD
语句:
ALTER TABLE table_name
ADD new_column_name column_definition
[FIRST | AFTER column_name],
ADD new_column_name column_definition
[FIRST | AFTER column_name],
...;
Code language: SQL (Structured Query Language) (sql)
例如,此语句将两列color
和note
添加到vehicles
表中:
ALTER TABLE vehicles
ADD color VARCHAR(50),
ADD note VARCHAR(255);
Code language: SQL (Structured Query Language) (sql)
该语句显示了vehicles
表的新结构:
DESCRIBE vehicles;
Code language: SQL (Structured Query Language) (sql)
MySQL ALTER TABLE
– 修改列
1)修改一列
以下是修改表中列的基本语法:
ALTER TABLE table_name
MODIFY column_name column_definition
[ FIRST | AFTER column_name];
Code language: SQL (Structured Query Language) (sql)
在修改列之前查看列的属性是一个很好的做法。
假设您要将note
列更改为最多 100 个字符的NOT NULL
列。
首先,显示vehicles
表的列列表:
DESCRIBE vehicles;
Code language: SQL (Structured Query Language) (sql)

然后,修改note
栏:
ALTER TABLE vehicles
MODIFY note VARCHAR(100) NOT NULL;
Code language: SQL (Structured Query Language) (sql)
最后,显示vehicles
表的列列表以验证更改:
DESCRIBE vehicles;
Code language: SQL (Structured Query Language) (sql)

2)修改多列
以下语句允许您修改多个列:
ALTER TABLE table_name
MODIFY column_name column_definition
[ FIRST | AFTER column_name],
MODIFY column_name column_definition
[ FIRST | AFTER column_name],
...;
Code language: SQL (Structured Query Language) (sql)
首先,显示vehicles
表的当前列:

其次,使用ALTER TABLE MODIFY
语句修改多个列:
ALTER TABLE vehicles
MODIFY year SMALLINT NOT NULL,
MODIFY color VARCHAR(20) NULL AFTER make;
Code language: SQL (Structured Query Language) (sql)
在这个例子中:
- 首先将
year
列的数据类型从INT
修改为SMALLINT
- 其次,修改
color
列,将maximum
长度设置为20
,删除NOT NULL
约束,并将其位置更改为出现在make
列之后。
第三,显示vehicles
表的新列列表以验证修改:

MySQL ALTER TABLE
– 重命名表中的列
要重命名列,请使用以下语句:
ALTER TABLE table_name
CHANGE COLUMN original_name new_name column_definition
[FIRST | AFTER column_name];
Code language: SQL (Structured Query Language) (sql)
在这个语法中:
- 首先,指定列所属的表的名称。
- 其次,指定列名称和新名称,然后在
CHANGE COLUMN
关键字后指定列定义。 - 第三,使用
FIRST
或AFTER column_name
选项来确定列的新位置。
以下示例使用ALTER TABLE CHANGE COLUMN
语句将列note
重命名为vehicleCondition
:
ALTER TABLE vehicles
CHANGE COLUMN note vehicleCondition VARCHAR(100) NOT NULL;
Code language: SQL (Structured Query Language) (sql)
让我们回顾一下vehicles
表的列列表:
DESCRIBE vehicles;
Code language: SQL (Structured Query Language) (sql)

MySQL ALTER TABLE
– 删除列
要删除表中的列,请使用ALTER TABLE DROP COLUMN
语句:
ALTER TABLE table_name
DROP COLUMN column_name;
Code language: SQL (Structured Query Language) (sql)
在这个语法中:
- 首先,指定要在
ALTER TABLE
关键字后删除列的表的名称。 - 其次,在
DROP COLUMN
关键字后指定要删除的列的名称。
此示例显示如何从vehicles
表中删除vehicleCondition
列:
ALTER TABLE vehicles
DROP COLUMN vehicleCondition;
Code language: SQL (Structured Query Language) (sql)
MySQL ALTER TABLE
– 重命名表
要重命名表,请使用ALTER TABLE RENAME TO
语句:
ALTER TABLE table_name
RENAME TO new_table_name;
Code language: SQL (Structured Query Language) (sql)
在这个语法中:
- 首先,在
ALTER TABLE
关键字后指定要重命名的表的名称。 - 其次,在
RENAME TO
关键字后指定表的新名称。
此示例将vehicles
表重命名为cars
:
ALTER TABLE vehicles
RENAME TO cars;
Code language: SQL (Structured Query Language) (sql)
在本教程中,您学习了如何使用 MySQL ALTER TABLE
语句添加列、修改列、重命名列、删除列和重命名表。