MySQL—ALTER命令

发布于 2024-01-12  295 次阅读


表创建完成后,如果想要对表进行修改,比如修改表名、增删字段、更改数据类型等,就需要使用ALTER命令。以下是ALTER的用法和实例:

修改表名
ALTER TABLE 旧表名
RENAME TO 新表名

新建一个testtable表并将其修改为table1

CREATE TABLE testtable(
    id int
);

image-20240112092035910

删除表
DROP TABLE 表名;

删除刚才创建的table1

DROP TABLE table1;

image-20240112092154138

添加列

添加列时默认追加到末尾,不过可通过参数指定位置,可选参数有ALTER 列名FIRST

ALTER TABLE 表名
ADD COLUMN 新列名 数据类型 [数据约束] [AFTER 列名/FIRST];

在上一节中新建的drop表中添加一列"生日",数据类型为DATE,默认值为2001-01-01。

ALTER TABLE `drop`
ADD COLUMN 生日 DATE DEFAULT "2001-01-01";

image-20240110190637066

可以看到新列“生日”已经添加上了,同时设置了默认值“2001-01-01”

修改列名及数据类型
ALTER TABLE 列名
CHANGE COLUMN 旧列名 新列名 数据类型 [数据约束];

如果不需要修改列名,仅修改数据类型,可以新旧列名写同一个。

我们在前面曾经提到过,固定长度的字符串使用CHAR(),现要将原表中的电话号码改为手机号码,同时将数据类型改为CHAR()

ALTER TABLE `drop`
CHANGE COLUMN 电话号码 手机号码 CHAR(11);

image-20240110192743503

可以看到,"电话号码"列已经变成了"手机号码",同时数据类型变为了CHAR(11),表示这是一个11位字符的字符串。

事实上,所有对字段名、数据类型、约束的修改都可以通过此方法来完成,不过我们接下来还是会介绍如何只针对约束进行操作。

删除列
ALTER TABLE 表名
DROP COLUMN 列名

drop表中的"生日"列删除

ALTER TABLE `drop`
DROP COLUMN 生日;

image-20240111091648761

删除主键约束
ALTER TABLE 表名
DROP PRIMARY KEY;

删除drop表中的主键约束

ALTER TABLE `drop`
DROP PRIMARY KEY;

image-20240112092537252

添加主键约束
ALTER TABLE 表名
ADD PRIMARY KEY (列名);

drop表的学号字段设置为主键

ALTER TABLE `drop`
ADD PRIMARY KEY (学号);

image-20240112092448277

添加外键约束
ALTER TABLE 子表名
ADD CONSTRAINT 外键名
FOREIGN KEY (外键列)
REFERENCES 父表名 (列名);
修改默认约束
ALTER TABLE 表名
ALTER 列名 SET DEFAULT 默认值;

drop表中的性别列默认值修改为女

ALTER TABLE `drop`
ALTER 性别 SET DEFAULT "女";

image-20240112094217376

删除默认约束
ALTER TABLE 表名
ALTER 列名 DROP DEFAULT;

删除drop表中性别列的默认约束

ALTER TABLE `drop`
ALTER 性别 DROP DEFAULT;

image-20240112094340670