MySQL Foreign Key

创建于 2024-12-02 / 35
字体: [默认] [大] [更大]

MySQL FOREIGN KEY 外键约束

FOREIGN KEY 约束用于防止破坏表之间链接的操作。

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

具有外键的表称为子表,具有主键的表称为引用表或父表。

看下面两张表:

Persons 表

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

Orders 表

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

注意 "Orders" 表中的 "PersonID" 列指向 "Persons" 表中的 "PersonID" 列。

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

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

FOREIGN KEY 约束防止无效数据插入外键列,因为它必须是父表中包含的值之一。


Advertisement

-->

FOREIGN KEY on CREATE TABLE

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

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

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

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)
);

FOREIGN KEY on ALTER TABLE

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

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

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

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

删除 FOREIGN KEY 外键约束

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

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

0 人点赞过