在关系型数据库中,外键(FK)是一个指向另一个表中主键的列。它建立两个表之间的关系,并将子表中的记录与父表中的记录相关联。
FK的用途
外键的主要用途是:
维护数据完整性:防止子表中存在孤立记录,即没有在父表中找到匹配记录的记录。
实现级联操作:当父表中的记录被删除或更新时,自动删除或更新与之关联的子表记录。
创建数据关系:通过外键,可以在多个表之间建立复杂的数据模型,以表示现实世界中的实体和关系。
FK的创建
在SQL中,可以使用ALTER TABLE语句或CREATE TABLE语句来创建外键。以下示例展示了在子表Customers中创建指向父表Orders的主键的FK:
sql
ALTER TABLE Customers
ADD FOREIGN KEY (order_id) REFERENCES Orders(order_id);
FK的类型
根据外键列和父表主键之间的关系,外键可以分为以下类型:
**一对一 (1:1)**:一个子表记录只能与一个父表记录关联。
**一对多 (1:M)**:一个子表记录可以与多个父表记录关联,但一个父表记录只能与一个子表记录关联。
**多对多 (M:N)**:一个子表记录可以与多个父表记录关联,而一个父表记录也可以与多个子表记录关联。
FK的约束
外键可以使用约束来确保数据完整性。以下是一些常见的FK约束:
**ON DELETE CASCADE**:当父表中的记录被删除时,自动删除与之关联的所有子表记录。
**ON UPDATE CASCADE**:当父表中的记录被更新时,自动更新与之关联的所有子表记录。
**ON DELETE SET NULL**:当父表中的记录被删除时,将子表中的外键列设置为NULL。
**ON UPDATE SET NULL**:当父表中的记录被更新时,将子表中的外键列设置为NULL。