MySQL的ALTER TABLE命令

0    61    1

👉 本文共约2995个字,系统预计阅读时间或需12分钟。

ALTER TABLE的作用

ALTER TABLE命令用于添加、删除或者更改现有数据表中的列。

还可以用 ALTER TABLE 命令来添加或者删除现有数据表上的约束。

示例数据库表

将"Customers"表用作示例

img

添加列语法

使用 ALTER TABLE 在现有的数据表中添加新列的基本语法如下:

ALTER TABLE table_name

ADD COLUMN column_name datatype;

给"Customers"表增加一列"年龄",可以这样写:

ALTER TABLE Customers

ADD COLUMN 年龄 INT;

我们再查看Customers表就在末尾增加一列"年龄"

img

由于我们没有设定值,"年龄"列默认都是NULL值(空值)

删除列语法

使用 ALTER TABLE 在现有的数据表中删除列的基本语法如下:

ALTER TABLE table_name

DROP COLUMN column_name;

我们再将上面"Customers"刚增加的"年龄"列给删除

ALTER TABLE Customers

DROP COLUMN 年龄;

执行完后就将"年龄"列给删除了。

img

修改列类型语法

使用 ALTER TABLE 更改现有的数据表中列的数据类型的基本语法如下:

ALTER TABLE table_name

MODIFY column_name datatype;

我们将"Customers"表的"邮编"由CHAR类型改成INT类型

ALTER TABLE customers

MODIFY 邮编 INT;

添加NOT NULL约束语法

使用 ALTER TABLE 给某列添加 NOT NULL 约束 的基本语法如下:

ALTER TABLE table_name

MODIFY column_name datatype NOT NULL;

我们可以将"Customers"表中的"省份"由NULL约束改成NOT NULL约束

ALTER TABLE Customers

MODIFY 省份 VARCHAR(20) NOT NULL;

结果如下:

img

添加唯一约束语法

使用 ALTER TABLE 给数据表添加 唯一约束 的基本语法如下:

ALTER TABLE table_name

ADD CONSTRAINT MyUniqueConstraint

UNIQUE(column1, column2...);

我们可以给"Customers"表中的"姓名"添加唯一约束

ALTER TABLE Customers

ADD CONSTRAINT idx_姓名

UNIQUE(姓名);

结果如下:

img

添加CHECK约束语法

使用 ALTER TABLE 给数据表添加 CHECK 约束 的基本语法如下:

ALTER TABLE table_name

ADD CONSTRAINT MyUniqueConstraint

CHECK (CONDITION);

我们可以给"Customers"表中的"邮编"添加CHECK约束,长度必须等于6

ALTER TABLE Customers

ADD CONSTRAINT con_客户ID

CHECK (length(邮编)=6);

当我们插入一条数据进去时,邮编的长度不等于6时,就会提示报错,如下图:

INSERT INTO customers

VALUES('张三','中山大道101号','广州','510','广东省');

结果如下:

img

当我们把邮编的长度改成6位的长度时,就可以正常插入了。

INSERT INTO customers

VALUES('张三','中山大道101号','广州','510000','广东省');

结果如下:

img

添加主键约束语法

使用 ALTER TABLE 给数据表添加 主键约束 的基本语法如下:

ALTER TABLE table_name

ADD CONSTRAINT MyPrimaryKey

PRIMARY KEY (column1, column2...);

我们先在Navicat中去掉客户ID的自增长主键,然后"客户ID"再添加不具备自增长属性的主键约束

ALTER TABLE Customers

ADD CONSTRAINT pri_客户ID

PRIMARY KEY(客户ID);

结果如下:

img

删除约束语法

使用 ALTER TABLE 从数据表中 删除约束 的基本语法如下:

ALTER TABLE table_name

DROP CONSTRAINT MyUniqueConstraint;

我们将刚才建的CHECK约束删除掉

ALTER TABLE Customers

DROP CONSTRAINT con_客户ID ;

我们可以看到直接的约束被删除了。

img

其他类型的约束同样可以用此语法进行删除。

注意:使用ALTER TABLE要极为小心,应该在进行改动前做一个完整的备份(模式和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的列,可能不能删除它们。类似地,如果删除了不应该删除的列,可能会丢失该列中的所有数据

一. 列常用操作① 添加新的一列test_column,并将其作为主键,FIRST将其放在表中第一行,auto_increement是自动增长alter table test_table add column test_column int not null auto_increment FIRST add primary key(test_column);1可以使用SQL语句“alter table ai3 add id0 int auto_increment primary key first;”来添加主键列。可以使用SQL语句“alter table ai4 modify id int auto_increment primary key;”来修改主键列。

② 删除列

③ 修改某一列的字段长度(例如本来是30字节改为50字节长)

④ 完全修改某一列(假设原本列名是test1_column,类型是int)

⑤ 仅仅想重命名某一列(首先需要了解这一列的类型,假如原本是int且不为空,列名是error_name_column)

二. 针对表的多数操作

① 修改指定表的存储引擎,假设原本是MYISAM

② 删除指定表的主键

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

这里有个情况需要指出,如果该主键列是自动增长(auto_increment)的,因为mysql要求自动增长列必须是索引,所以删除主键也就删除了主键索引,这是不符合mysql要求的,是无法实现的,会报错,必须先删除自动增长(通过修改列属性),后删除主键

③ 为指定表添加主键

④ 为指定表添加索引(普通索引),test_index是索引名

⑤ 删除指定表索引

⑥ 重命名表



如果想在一个已经建好的表中添加一列,可以用诸如:

alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null;

这条语句会向已有的表中加入新的一列,这一列在表的最后一列位置。如果我们希望添加在指定的一列,可以用:

alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null after COLUMN_NAME;

注意,上面这个命令的意思是说添加新列到某一列后面。如果想添加到第一列的话,可以用:

alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null first;

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

1 × 4 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部