MySQL ALTER TABLE

时间:2019-11-20 08:52:09  来源:igfitidea点击:

简介:在本教程中,您将学习如何使用MySQL ALTER TABLE语句添加列,更改列,重命名列,删除列和重命名表。

设置样本表

我们为演示创建一个名为Vehicles的表:

CREATE TABLE vehicles (
    vehicleId INT,
    year INT NOT NULL,
    make VARCHAR(100) NOT NULL,
    PRIMARY KEY(vehicleId)
);

MySQL ALTER TABLE –将列添加到表

ALTER TABLE ADD语句允许您将一个或多个列添加到表中。

1)在表中添加一列

要将列添加到表中,请使用ALTER TABLE ADD语法:

ALTER TABLE table_name
ADD 
    new_column_name column_definition
    [FIRST | AFTER column_name]

使用以下语法:

  • table_name –指定要在ALTER TABLE关键字之后添加一个或多个新列的表的名称。

  • new_column_name –指定新列的名称。

  • column_definition –指定新列的数据类型,最大大小和列约束

  • 第一| AFTER column_name指定表中新列的位置。
    您可以在现有列之后(ATER column_name)添加列,也可以在第一列(FIRST)中添加列。
    如果省略此子句,则该列将附加在表的列列表的末尾。

以下示例使用ALTER TABLE ADD语句在Vehicles表的末尾添加一列:

ALTER TABLE vehicles
ADD model VARCHAR(100) NOT NULL;

此语句显示Vehicles表的列列表:

DESCRIBE vehicles;

从输出中可以清楚地看到,列模型已添加到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],
    ...;

例如,此语句向Vehicles表添加两列颜色和注释:

ALTER TABLE vehicles
ADD color VARCHAR(50),
ADD note VARCHAR(255);

该语句显示了Vehicles表的新结构:

DESCRIBE vehicles;

MySQL ALTER TABLE –修改列

1)修改列

这是修改表中列的基本语法:

ALTER TABLE table_name
MODIFY column_name column_definition
[ FIRST | AFTER column_name];

在修改列之前,最好先查看其属性。

假设您想将note列更改为NOT NULL列,最多100个字符。

首先,显示Vehicles表的列列表:

DESCRIBE vehicles;

然后,修改注释列:

ALTER TABLE vehicles 
MODIFY note VARCHAR(100) NOT NULL;

最后,显示Vehicles表的列列表以验证更改:

DESCRIBE vehicles;

2)修改多列

以下语句允许您修改多个列:

ALTER TABLE table_name
    MODIFY column_name column_definition
    [ FIRST | AFTER column_name],
    MODIFY column_name column_definition
    [ FIRST | AFTER column_name],
    ...;

首先,显示Vehicles表的当前列:

其次,使用ALTER TABLE MODIFY语句修改多列:

ALTER TABLE vehicles 
MODIFY year SMALLINT NOT NULL,
MODIFY color VARCHAR(20) NULL AFTER make;

在此示例中:

  • 首先,将Year列的数据类型从INT修改为SMALLINT
  • 其次,修改颜色列,方法是将最大长度设置为20,删除NOT NULL约束,并将其位置更改为出现在make列之后。

第三,显示Vehicles表的新列列表以验证修改:

MySQL ALTER TABLE –重命名表中的列

要重命名列,请使用以下语句:

ALTER TABLE table_name
    CHANGE COLUMN original_name new_name column_definition
    [FIRST | AFTER column_name];

使用以下语法:

  • 首先,指定列所属的表的名称。

  • 其次,在CHANGE COLUMN关键字之后指定列名和新名称,后跟列定义。

  • 第三,使用FIRST或AFTER column_name选项确定列的新位置。

以下示例使用ALTER TABLE CHANGE COLUMN语句将列注释重命名为vehicleCondition:

ALTER TABLE vehicles 
CHANGE COLUMN note vehicleCondition VARCHAR(100) NOT NULL;

让我们查看Vehicles表的列列表:

DESCRIBE vehicles;

MySQL ALTER TABLE –删除一列

要在表中删除列,请使用ALTER TABLE DROP COLUMN语句:

ALTER TABLE table_name
DROP COLUMN column_name;

使用以下语法:

  • 首先,在ALTER TABLE关键字之后指定要删除列的表的名称。

  • 其次,在DROP COLUMN关键字之后指定要删除的列的名称。

本示例说明如何从Vehicles表中删除vehicleCondition列:

ALTER TABLE vehicles
DROP COLUMN vehicleCondition;

MySQL ALTER TABLE –重命名表

要重命名表,请使用ALTER TABLE RENAME TO语句:

ALTER TABLE table_name
RENAME TO new_table_name;

使用以下语法:

  • 首先,在ALTER TABLE关键字之后指定要重命名的表的名称。

  • 其次,在RENAME TO关键字之后指定表的新名称。

本示例将Vehicles表重命名为cars:

ALTER TABLE vehicles 
RENAME TO cars;

在本教程中,您学习了如何使用MySQL ALTER TABLE语句添加列,修改列,重命名列,删除列并重命名表。