外鍵 (FOREIGN KEY) 讓一張表的欄位 指向另一張表的主鍵,建立表與表之間的關聯關係。
Persons 表 (父表):P_Id 為主鍵
Orders 表 (子表):P_Id 為外鍵,指向 Persons.P_Id
| O_Id | OrderNo | P_Id |
|---|---|---|
| 1 | 77895 | 3 |
| 2 | 44678 | 3 |
| 3 | 22456 | 2 |
| 4 | 24562 | 1 |
外鍵約束功能:
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)
);
CREATE TABLE Orders (
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
);
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 Orders
ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id);
-- 命名版本
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id);
| 資料庫 | 語法 |
|---|---|
| MySQL | ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders |
| SQL Server / Oracle / Access | ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders |
外鍵是關聯式資料庫維護參考完整性的核心機制,設計時需謹慎規劃刪除/更新規則 (CASCADE/SET NULL/RESTRICT)。