SQL FOREIGN KEY 约束

SQL FOREIGN KEY 约束

FOREIGN KEY 约束在两个表之间建立链接,并防止破坏它们之间链接的操作。

FOREIGN KEY 是表中引用另一个表 PRIMARY KEY 的列。

包含外键列的表称为子表,包含主键列的表称为被引用表或父表。

FOREIGN KEY 约束防止将无效数据插入外键列(在子表中),因为该值必须存在于父表中。

FOREIGN KEY 约束还会阻止您删除父表中的记录,如果子表中仍存在相关行的话。

假设我们有两个表:

Persons 表

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23

Orders 表

OrderID OrderNumber PersonID
3 22456 2
4 24562 1

这里我们看到 "Orders" 表中的 "PersonID" 列指向 "Persons" 表中的 "PersonID" 列。

"Persons" 表中的 "PersonID" 列是 "Persons" 表中的 PRIMARY KEY

"Orders" 表中的 "PersonID" 列是 "Orders" 表中的 FOREIGN KEY

CREATE TABLE 上的 FOREIGN KEY

以下 SQL 语句在创建 Orders 表时在 PersonID 列上创建了 FOREIGN KEY 约束:

CREATE TABLE Orders (
    OrderID int PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int,
    CONSTRAINT fk_Person
    FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

ALTER TABLE 上的 FOREIGN KEY

要在 Orders 表创建后,在 PersonID 列上创建 FOREIGN KEY 约束,请使用以下 SQL:

ALTER TABLE Orders
ADD CONSTRAINT fk_Person
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);

删除 FOREIGN KEY 约束

要删除 FOREIGN KEY 约束,请使用以下 SQL:

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_Person;

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_Person;