MySQL 外键 约束
MySQL 外键约束
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 约束阻止无效数据插入外键列,因为它必须是父表中包含的值之一。
CREATE TABLE 上的 FOREIGN KEY
以下 SQL 在创建“Orders”表时,在“PersonID”列上创建了 FOREIGN KEY。
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)
);ALTER TABLE 上的 FOREIGN KEY
要在“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);DROP a FOREIGN KEY Constraint (删除 FOREIGN KEY 约束)
要删除 FOREIGN KEY 约束,请使用以下 SQL:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;