SQL FOREIGN KEY 约束详解
FOREIGN KEY
约束在 SQL 中用于在两个表之间建立链接(或关系),确保引用的数据的完整性。一个表中的 FOREIGN KEY
指向另一个表中的唯一键(通常是 PRIMARY KEY
或具有 UNIQUE
约束的列)。
特点和使用场景
- 数据完整性:
FOREIGN KEY
约束确保引用表中的数据必须在主表中存在,从而维护了数据的引用完整性。 - 级联操作:可以设置级联更新和级联删除操作,当主表中的数据发生变化时,引用表中的数据可以自动更新或删除。
- 多表查询:
FOREIGN KEY
约束使得多表查询(如连接查询)更加可靠和有意义。
SQL FOREIGN KEY 约束语法
在创建表时,可以为特定列定义 FOREIGN KEY
约束,并指定它引用的另一个表和列:
CREATE TABLE table_name
(
column1 data_type,
column2 data_type,
FOREIGN KEY (column2) REFERENCES referenced_table (referenced_column)
);
table_name
:当前创建的表的名称。column1
,column2
:列的名称。data_type
:列的数据类型。FOREIGN KEY (column2)
:定义column2
为外键。REFERENCES referenced_table (referenced_column)
:指定外键引用的表和列。
代码示例
假设我们有两个表:Persons
和 Orders
。Persons
表包含人员的信息,而 Orders
表包含订单信息,每个订单都与一个人员相关联。
-- 创建 "Persons" 表
CREATE TABLE Persons
(
P_Id int PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Address varchar(255),
City varchar(255)
);
-- 创建 "Orders" 表
CREATE TABLE Orders
(
OrderID int PRIMARY KEY,
P_Id int,
OrderDate date,
FOREIGN KEY (P_Id) REFERENCES Persons (P_Id)
);
在这个例子中:
Persons
表有一个P_Id
列,作为主键。Orders
表有一个P_Id
列,作为外键,它引用了Persons
表中的P_Id
列。