MySQL ALTER TABLE

摘要:在本教程中,您将学习如何使用 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 - 示例表

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)

例如,此语句将两列colornote添加到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 - 添加多列示例

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)
MySQL ALTER TABLE - 修改列之前

然后,修改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)
MySQL ALTER TABLE - 修改列后

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 - 修改多列后

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关键字后指定列定义。
  • 第三,使用FIRSTAFTER 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 - 重命名列后

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语句添加列、修改列、重命名列、删除列和重命名表。

本教程有帮助吗?