SQL入門教學手冊login
SQL入門教學手冊
作者:php.cn  更新時間:2022-04-12 14:15:40

SQL 外鍵



SQL FOREIGN KEY 約束

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

讓我們透過一個實例來解釋外鍵。請看下面兩個表:

"Persons" 表:

#P_IdLastNameFirstNameAddressCity
1#HansenOlaTimoteivn 10 Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKari#Storgt 20Stavanger

"Orders" 表:

# 177895
O_Id#OrderNoP_Id
###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###############

PHP中文網