今天是日更的 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(检查) 约束》。