您的位置:MYSQL中文网 > sql foreign key约束 SQL FOREIGN KEY 约束

sql foreign key约束 SQL FOREIGN KEY 约束

2023-03-11 21:30 MySQL教程

sql foreign key约束 SQL FOREIGN KEY 约束

sql foreign key约束

外键约束(Foreign Key Constraint)是用于实现关系数据库中表之间的一致性的一种机制。它是一个字段或者一组字段,它可以引用另外一个表中的主键字段。外键约束可以保证数据库中的数据完整性,也就是说,如果在一个表中有一个外键,那么在另外一个表中必须有相应的主键值。

SQL 中使用 FOREIGN KEY 约束来定义外键。FOREIGN KEY 约束由 REFERENCES 子句创建,该子句包含了被引用表的名称和被引用列的名称。

CREATE TABLE Orders 
( 
    OrderID int NOT NULL, 
    CustomerID int NOT NULL, 
    OrderDate datetime, 
    CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) 
) ;

上述代码创建了 Orders 表,并在 CustomerID 字段上创建了 FOREIGN KEY 约束,该字段引用 Customers 表中的 CustomerID 字段。这样就能保证 Orders 表中 CustomerID 字段所包含的值必须是 Customers 表中已有的 CustomerID 值。

FOREIGN KEY 约束还能帮助我们避免几乎所有不正当的数据写入问题。例如,如果我们想要将新订单写入 Orders 表时,但是在 Customers 表中不存在相应的客户信息时,FOREIGN KEY 约束会对此作出相应的反应并抛出异常。

SQL FOREIGN KEY 约束

SQL FOREIGN KEY 约束


SQL FOREIGN KEY 约束

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

让我们通过一个实例来解释外键。请看下面两个表:

"Persons" 表:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

"Orders" 表:

O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 2
4 24562 1

请注意,"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 Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)


撤销 FOREIGN KEY 约束

如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

阅读全文
以上是MYSQL中文网为你收集整理的sql foreign key约束 SQL FOREIGN KEY 约束全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 MYSQL中文网 mysqlcn.com 版权所有 联系我们
桂ICP备12005667号-29 Powered by CMS