SQL FOREIGN KEY 关键字
FOREIGN KEY
FOREIGN KEY 约束是用于将两个表关联在一起的键。
外键是一个表中引用另一个表中主键的字段(或字段集合)。
建表时创建外键
下面的 SQL 在 "Orders" 表创建的时候就创建了一个 "PersonID" 列的外键:
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));
要允许命名外键约束,并在多列上定义外键约束,请使用以下 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));
改表时创建外键
当 "Orders" 已存在时, 要对 "PersonID" 列创建外键, 可以使用以下 SQL 语句:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE OrdersADD FOREIGN KEY (PersonID)REFERENCES Persons(PersonID);
要允许命名外键约束,并在多列上定义外键约束,请使用以下 SQL 语法:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE OrdersADD CONSTRAINT FK_PersonOrderFOREIGN KEY (PersonID)REFERENCES Persons(PersonID);
删除外键
要删除外键约束,请使用以下 SQL:
MySQL:
ALTER TABLE OrdersDROP FOREIGN KEY FK_PersonOrder;
SQL Server / Oracle / MS Access:
ALTER TABLE OrdersDROP CONSTRAINT FK_PersonOrder;