首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> SQL 基礎

SQL FOREIGN KEY 外鍵約束完整指南:建立關聯、級聯操作與跨平台語法對照

     編輯:SQL 基礎

SQL FOREIGN KEY 外鍵約束完整指南


核心概念

外鍵 (FOREIGN KEY) 讓一張表的欄位 指向另一張表的主鍵,建立表與表之間的關聯關係。

範例情境

Persons 表 (父表):P_Id 為主鍵

Orders 表 (子表):P_Id 為外鍵,指向 Persons.P_Id

O_IdOrderNoP_Id
1778953
2446783
3224562
4245621

外鍵約束功能:

  • 防止破壞表關聯的操作 (如刪除被引用的父記錄)
  • 防止非法資料寫入外鍵欄位 (值必須存在於父表主鍵中)

CREATE TABLE 時建立外鍵

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 / Access

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 時新增外鍵 (通用)

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);

刪除外鍵約束

資料庫語法
MySQLALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / AccessALTER TABLE Orders DROP CONSTRAINT fk_PerOrders

外鍵是關聯式資料庫維護參考完整性的核心機制,設計時需謹慎規劃刪除/更新規則 (CASCADE/SET NULL/RESTRICT)。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved