SQL FOREIGN KEY 关键字

FOREIGN KEY

FOREIGN KEY 约束是用于将两个表链接在一起的关键字。

FOREIGN KEY 是一个表中的一个字段(或字段集合),它引用另一个表中的 PRIMARY KEY

在 CREATE TABLE 上使用 SQL FOREIGN KEY

以下 SQL 在创建 "Orders" 表时在 "PersonID" 列上创建一个 FOREIGN KEY

MySQL:

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

SQL Server / Oracle / MS Access:

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

为了允许命名 FOREIGN KEY 约束,并在多个列上定义 FOREIGN KEY 约束,请使用以下 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

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

在 ALTER TABLE 上使用 SQL FOREIGN KEY

如果 "Orders" 表已经创建,要在 "PersonID" 列上创建一个 FOREIGN KEY 约束,请使用以下 SQL:

MySQL / SQL Server / Oracle / MS Access:

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

为了允许命名 FOREIGN KEY 约束,并在多个列上定义 FOREIGN KEY 约束,请使用以下 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

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

删除 FOREIGN KEY 约束

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

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;