SQL FOREIGN KEY 約束

SQL FOREIGN KEY 約束

一個表中的 FOREIGN KEY 指向另外一個表中的 PRIMARY KEY。spa

讓咱們經過一個例子來解釋外鍵。請看下面兩個表:code

"Persons" 表:it

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

"Orders" 表:table

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

請注意,"Orders" 中的 "Id_P" 列指向 "Persons" 表中的 "Id_P" 列。ast

"Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。語法

"Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。命名

FOREIGN KEY 約束用於預防破壞表之間鏈接的動做。數據

FOREIGN KEY 約束也能防止非法數據插入外鍵列,由於它必須是它指向的那個表中的值之一。tab

SQL FOREIGN KEY Constraint on CREATE TABLE

下面的 SQL 在 "Orders" 表建立時爲 "Id_P" 列建立 FOREIGN KEY:co

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P))

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P))

若是須要命名 FOREIGN KEY 約束,以及爲多個列定義 FOREIGN KEY 約束,請使用下面的 SQL 語法:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P))

SQL FOREIGN KEY Constraint on ALTER TABLE

若是在 "Orders" 表已存在的狀況下爲 "Id_P" 列建立 FOREIGN KEY 約束,請使用下面的 SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE OrdersADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

若是須要命名 FOREIGN KEY 約束,以及爲多個列定義 FOREIGN KEY 約束,請使用下面的 SQL 語法:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE OrdersADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)

撤銷 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
相關文章
相關標籤/搜索