SQL FOREIGN KEY 约束

1. SQL foreign key 约束

一个表中的 foreign key 指向另一个表中的 unique key(唯一约束)。

下面通过实例解释外键。

 注意,“Orders”表中的“P_Id”列指向“Persons” 表中的“P_Id”列。

“Persons”表中的“P_Id”列是“Persons”表中的primary key

“Orders” 表中的“P_Id”列是“Orders”表中的 foreign key

foreign key约束用于预防破坏表之间连接的行为。

foreign key约束也能防止非法数据插入外键列,因此它必须是指向的那个表中的值之一。

 

2. 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)
)

 

 

3. alter table 时的 SQL foregin 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)

 

 

4. 撤销 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

 

posted @ 2021-07-09 09:35  做梦当财神  阅读(239)  评论(0编辑  收藏  举报