轻松上手,快乐学习!

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;