目录

SQL FOREIGN KEY 关键字


FOREIGN KEY

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

外键是一个表中的字段(或字段集合),它引用另一表中的主键。


创建表时的 SQL 外键

创建 "Orders" 表时,以下 SQL 在 "PersonID" 列上创建外键:

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 访问:

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 访问:

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 外键

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

MySQL / SQL Server / Oracle / MS 访问:

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

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

MySQL / SQL Server / Oracle / MS 访问:

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

删除外键约束

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

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS 访问:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;