SQL基础知识V2——ALTER TABLE

简介: SQL数据库开发

ALTER TABLE的作用

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

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


示例数据库表

将"Customers"表用作示例

50.jpg

添加列语法

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

ALTER TABLE table_name

ADD column_name datatype;

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

ALTER TABLE Customers
ADD 年龄 INT;

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

51.jpg

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

删除列语法

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

ALTER TABLE table_name

DROP COLUMN column_name;

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

ALTER TABLE Customers
DROP COLUMN 年龄;

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

52.jpg

修改列类型语法

使用 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;

结果如下:


53.jpg


添加唯一约束语法

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

ALTER TABLE table_name

ADD CONSTRAINT MyUniqueConstraint

UNIQUE(column1, column2...);

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

ALTER TABLE Customers
ADD CONSTRAINT idx_姓名
UNIQUE(姓名);

结果如下:

54.jpg

添加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);

结果如下:


58.jpg

添加主键约束语法

使用 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);

结果如下:


56.jpg


删除约束语法

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

ALTER TABLE table_name

DROP CONSTRAINT MyUniqueConstraint;

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

ALTER TABLE Customers
DROP CONSTRAINT con_客户ID ;

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


60.jpg

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


如果你在使用 MySQL,代码应当如下:

ALTER TABLE table_name

DROP INDEX MyUniqueConstraint;


批注

ALTER TABLE可以对表进行各种更改操作,是我们修改表结构主要关键词,修改语法因不同的数据库平台略有差别。在使用的时候一定要看清是哪个数据库平台,以防混淆。

相关文章
|
4月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL FOREIGN KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL FOREIGN KEY 约束。
52 5
|
4月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL FOREIGN KEY 约束
【7月更文挑战第19天】CREATE TABLE 时的 SQL FOREIGN KEY 约束
40 8
|
4月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL PRIMARY KEY 约束
【7月更文挑战第24天】ALTER TABLE 时的 SQL PRIMARY KEY 约束。
40 3
|
4月前
|
SQL Oracle 关系型数据库
CREATE TABLE 时的 SQL PRIMARY KEY 约束
【7月更文挑战第24天】CREATE TABLE 时的 SQL PRIMARY KEY 约束。
43 2
|
4月前
|
SQL 关系型数据库 MySQL
SQL CREATE TABLE 语句
【7月更文挑战第18天】SQL CREATE TABLE 语句。
44 6
|
4月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL PRIMARY KEY 约束
【7月更文挑战第19天】ALTER TABLE 时的 SQL PRIMARY KEY 约束。
40 3
|
4月前
|
SQL 关系型数据库 MySQL
ALTER TABLE 时的 SQL DEFAULT 约束
【7月更文挑战第20天】ALTER TABLE 时的 SQL DEFAULT 约束。
40 1
|
4月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL UNIQUE 约束
【7月更文挑战第16天】ALTER TABLE 时的 SQL UNIQUE 约束。
25 1
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
111 13