轻松上手,快乐学习!

SQL FOREIGN KEY 约束


SQL 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。

“订单”表中的“PersonID”列是“订单”表中的FOREIGN KEY。

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

FOREIGN KEY约束还可以防止将无效数据插入到外键列中,因为它必须是它指向的表中包含的值之一。


CREATE TABLE 上的 SQL FOREIGN KEY

创建“Orders”表时,以下SQL在“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);

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