MySQL 教程
/ Foreign Key
Foreign Key
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
約束防止無效數(shù)據(jù)插入外鍵列,因為它必須是父表中包含的值之一。 p>
FOREIGN KEY on CREATE TABLE
要在創(chuàng)建 "Orders" 表時在 "PersonID" 列上創(chuàng)建 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" 列上創(chuàng)建 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;