SQL FOREIGN KEY 外键限制学习笔记

转载自这里
简介:
外鍵是一個 (或多個) 指向其它資料表中主鍵的欄位,它限制欄位值只能來自另一個資料表的主鍵欄位,用來確定資料的參考完整性 (Referential Integrity)。

ps:如果想在 MySQL 資料庫中使用外鍵限制,必需讓資料表使用 InnoDB 儲存引擎。

讓我們簡單了解一下什麼是外鍵:
這是一個客戶資料表 customers
这里写图片描述
而這是客戶訂單的資料表 orders
这里写图片描述
在這裡我們會想有一個限制,就是在客戶訂單資料表中的客戶,都一定要在 customers 資料表中存在。所以我們需要在 orders 資料表中設定一個外鍵,再將此外鍵指向 customers 資料表中的主鍵,以確定所有在 orders 資料表中的客戶都存在於 customers 資料表中,才不會有任何幽靈訂單的出現!

FOREIGN KEY Constraint

假設我們要將 customer 資料表中的 C_Id 欄位設為外鍵:

在建立資料表時 CREATE TABLE

CREATE TABLE orders (
    O_id INT NOT NULL,
    Order_No INT NOT NULL,
    C_id INT,
    PRIMARY KEY (O_id),
    FOREIGN KRY (Cid) REFERENCES customers(C_id));

替外鍵命名與多欄位的外鍵:

CREATE TABLE orders (
O_id INT NOT NULL PRIMARY KEY,
Order_No INT NOT NULL,
C_id INT,
CONSTRAINT fk_Customer_id FOREIGN KEY (C_id) REFERENCES customers (C_id));

我們限制 C_Id 為外鍵,CONSTRAINT 後面接著的即是此外鍵的名稱,另一個重點是記得 customers 資料表中需將 C_Id 設為主鍵。

更改資料表限制 ALTER TABLE

ALTER TABLE orders
Add FOREIGN KEY (C_id) REFERENCES customers(C_id);

替外鍵命名與多欄位的外鍵:

ALTER TABLE orders
ADD CONSTRAINT fk_Customer_id FOREIGN KEY (C_id) REFERENCES customers (C_id);

移除資料表限制 ALTER TABLE

MySQL

ALTER TABLE orders DROP FOREIGN KEY fk_Customer_Id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值