当前位置:K88软件开发文章中心编程语言SQLSQL01 → 文章内容

SQL FOREIGN KEY 约束

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 14:11:53

SQL FOREIGN KEY 约束SQL FOREIGN KEY 约束一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。让我们通过一个实例来解释外键。请看下面两个表:"Persons" 表:P_IdLastNameFirstNameAddressCity1HansenOlaTimoteivn 10Sandnes2SvendsonToveBorgvn 23Sandnes3PettersenKariStorgt 20Stavanger"Orders" 表:O_IdOrderNoP_Id1778953244678332245624245621请注意,"Orders" 表中的 "P_Id" 列指向 "Persons" 表中的 "P_Id" 列。"Persons" 表中的 "P_Id" 列是 "Persons" 表中的 PRIMARY KEY。"Orders" 表中的 "P_Id" 列是 "Orders" 表中的 FOREIGN KEY。FOREIGN KEY 约束用于预防破坏表之间连接的行为。FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。CREATE TABLE 时的 SQL FOREIGN KEY 约束下面的 SQL 在 "Orders" 表创建时在 "P_Id" 列上创建 FOREIGN KEY 约束:MySQL:CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,PRIMARY KEY (O_Id),FOREIGN KEY (P_Id) REFERENCES Persons(P_Id))SQL Server / Oracle / MS Access:CREATE TABLE Orders(O_Id int NOT NULL PRIMARY KEY,OrderNo int NOT NULL,P_Id int FOREIGN KEY REFERENCES Persons(P_Id))如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:MySQL / SQL Server / Oracle / MS Access:CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,PRIMARY KEY (O_Id),CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)REFERENCES Persons(P_Id))ALTER TABLE 时的 SQL FOREIGN KEY 约束当 "Orders" 表已被创建时,如需在 "P_Id" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:MySQL / SQL Server / Oracle / MS Access:ALTER TABLE OrdersADD FOREIGN KEY (P_Id)REFERENCES Persons(P_Id)如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:MySQL / SQL Server / Oracle / MS Access:ALTER TABLE OrdersADD CONSTRAINT fk_PerOrdersFOREIGN KEY (P_Id)REFERENCES Persons(P_Id)撤销 FOREIGN KEY 约束如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:MySQL:ALTER TABLE OrdersDROP FOREIGN KEY fk_PerOrdersSQL Server / Oracle / MS Access:ALTER TABLE OrdersDROP CONSTRAINT fk_PerOrders

SQL FOREIGN KEY 约束