ALTER TABLE的作用
ALTER TABLE命令用于添加、删除或者更改现有数据表中的列。
还可以用 ALTER TABLE 命令来添加或者删除现有数据表上的约束。
示例数据库表
将"Customers"表用作示例
添加列语法
使用 ALTER TABLE 在现有的数据表中添加新列的基本语法如下:
ALTER TABLE table_name
ADD column_name datatype;
给"Customers"表增加一列"年龄",可以这样写:
ALTER TABLE Customers ADD 年龄 INT;
我们再查看Customers表就在末尾增加一列"年龄"
由于我们没有设定值,"年龄"列默认都是NULL值(空值)
删除列语法
使用 ALTER TABLE 在现有的数据表中删除列的基本语法如下:
ALTER TABLE table_name
DROP COLUMN column_name;
我们再将上面"Customers"刚增加的"年龄"列给删除
ALTER TABLE Customers DROP COLUMN 年龄;
执行完后就将"年龄"列给删除了。
修改列类型语法
使用 ALTER TABLE 更改现有的数据表中列的数据类型的基本语法如下:
ALTER TABLE table_name
ALTER COLUMN column_name datatype;
我们将"Customers"表的"邮编"由CHAR类型改成INT类型
ALTER TABLE Customers ALTER COLUMN 邮编 INT;
添加NOT NULL约束语法
使用 ALTER TABLE 给某列添加 NOT NULL 约束 的基本语法如下:
ALTER TABLE table_name
ALTER COLUMN column_name datatype NOT NULL;
我们可以将"Customers"表中的"省份"由NULL约束改成NOT NULL约束
ALTER TABLE Customers ALTER COLUMN 省份 VARCHAR(20) NOT NULL;
结果如下:
添加唯一约束语法
使用 ALTER TABLE 给数据表添加 唯一约束 的基本语法如下:
ALTER TABLE table_name
ADD CONSTRAINT MyUniqueConstraint
UNIQUE(column1, column2...);
我们可以给"Customers"表中的"姓名"添加唯一约束
ALTER TABLE Customers ADD CONSTRAINT idx_姓名 UNIQUE(姓名);
结果如下:
添加CHECK约束语法
使用 ALTER TABLE 给数据表添加 CHECK 约束 的基本语法如下:
ALTER TABLE table_name
ADD CONSTRAINT MyUniqueConstraint
CHECK (CONDITION);
我们可以给"Customers"表中的"客户ID"添加CHECK约束,必须大于0
ALTER TABLE Customers ADD CONSTRAINT con_客户ID CHECK (客户ID>0);
结果如下:
添加主键约束语法
使用 ALTER TABLE 给数据表添加 主键约束 的基本语法如下:
ALTER TABLE table_name
ADD CONSTRAINT MyPrimaryKey
PRIMARY KEY (column1, column2...);
我们可以给"Customers"表中的"客户ID"添加主键约束,必须大于0
ALTER TABLE Customers ADD CONSTRAINT pri_客户ID PRIMARY KEY(客户ID);
结果如下:
删除约束语法
使用 ALTER TABLE 从数据表中 删除约束 的基本语法如下:
ALTER TABLE table_name
DROP CONSTRAINT MyUniqueConstraint;
我们将刚才建的CHECK约束删除掉
ALTER TABLE Customers DROP CONSTRAINT con_客户ID ;
我们可以看到直接的约束被删除了。
其他类型的约束同样可以用此语法进行删除。
如果你在使用 MySQL,代码应当如下:
ALTER TABLE table_name
DROP INDEX MyUniqueConstraint;
批注
ALTER TABLE可以对表进行各种更改操作,是我们修改表结构主要关键词,修改语法因不同的数据库平台略有差别。在使用的时候一定要看清是哪个数据库平台,以防混淆。