首发于软件测试
数据库 SQL 约束之 FOREIGN KEY

数据库 SQL 约束之 FOREIGN KEY

今天是日更的 53/365 天

大家好,我是阿常,上一篇阿常讲了《数据库 SQL 约束之 PRIMARY KEY》,今天阿常和大家分享《数据库 FOREIGN KEY 约束》。

SQL 约束的定义

SQL 约束用于规定表中的数据规则。如果存在违反约束的数据行为,行为会被约束终止。





约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。





SQL FOREIGNKEY 约束

一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。我们来通过实例解释一下外键,请看下面两张表:

1、student 表




2、orders 表





请注意,"orders" 表中的"P_Id" 列指向"student" 表中的 "ID" 列。

"student" 表中的 "ID" 列是 "student" 表中的 PRIMARY KEY(主键)

"orders" 表中 "P_Id" 列是 "orders" 表中的 FOREIGN KEY(外键)

FOREIGN KEY(外键)约束用于预防破坏表之间连接的行为。

FOREIGN KEY(外键)约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

一)CREATE TABLE 时的 SQL FOREIGN KEY 约束

1、创建表时,定义单个列的 FOREIGN KEY 约束

数据库实例

CREATE TABLE orders

(

OrderId varchar(255),

OrderNo varchar(255),

P_Id varchar(255),

PRIMARY KEY (OrderId),

FOREIGN KEY (P_Id)

REFERENCES student(ID)

)

2、创建表时,定义多个列的 FOREIGN KEY 约束

数据库实例

CREATE TABLE orders

(

OrderId varchar(255),

OrderNo varchar(255),

P_Id varchar(255),

PRIMARY KEY (OrderId),

CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)

REFERENCES student(ID)

)

二)ALTER TABLE 时的 SQL FOREIGN KEY 约束

1、当表已被创建,定义单个列的 FOREIGN KEY 约束

数据库实例

ALTER TABLE orders

ADD FOREIGN KEY(P_Id)

REFERENCES student(ID);

2、当表已被创建,定义多个列的 FOREIGN KEY 约束

数据库实例

ALTER TABLE orders

ADD CONSTRAINT fk_PerOrders

FOREIGN KEY(P_Id)

REFERENCES student(ID);

三)撤销 FOREIGN KEY 约束

数据库实例

ALTER TABLE orders

DROP FOREIGN KEY fk_PerOrders;

至此,数据库 SQL FOREIGN(外键) 约束就讲完啦,下一篇讲《数据库 SQL CHECK(检查) 约束》。

发布于 2022-02-28 11:12