数据库 SQL 约束之 FOREIGN KEY

2022-09-01 10:34:17 浏览数 (1)

今天是日更的 53/365 天

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

SQL 约束的定义

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

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

SQL FOREIGN KEY 约束

一个表中的 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 约束

数据库实例

代码语言:javascript复制
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 约束

数据库实例

代码语言:javascript复制
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 约束

数据库实例

代码语言:javascript复制
ALTER TABLE orders
ADD FOREIGN KEY(P_Id)
REFERENCES student(ID);

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

数据库实例

代码语言:javascript复制
ALTER TABLE orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY(P_Id)
REFERENCES student(ID);

三)撤销 FOREIGN KEY 约束

数据库实例

代码语言:javascript复制
ALTER TABLE orders
DROP FOREIGN KEY fk_PerOrders;

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

0 人点赞