轉(zhuǎn)載自這里 簡(jiǎn)介: 外鍵是一個(gè) (或多個(gè)) 指向其它資料表中主鍵的欄位,它限制欄位值只能來(lái)自另一個(gè)資料表的主鍵欄位,用來(lái)確定資料的參考完整性 (Referential Integrity)。
ps:如果想在 MySQL 資料庫(kù)中使用外鍵限制,必需讓資料表使用 InnoDB 儲(chǔ)存引擎。
讓我們簡(jiǎn)單了解一下什麼是外鍵: 這是一個(gè)客戶資料表 customers
而這是客戶訂單的資料表 orders
在這裡我們會(huì)想有一個(gè)限制,就是在客戶訂單資料表中的客戶,都一定要在 customers 資料表中存在。所以我們需要在 orders 資料表中設(shè)定一個(gè)外鍵,再將此外鍵指向 customers 資料表中的主鍵,以確定所有在 orders 資料表中的客戶都存在於 customers 資料表中,才不會(huì)有任何幽靈訂單的出現(xiàn)!
FOREIGN KEY Constraint
假設(shè)我們要將 customer 資料表中的 C_Id 欄位設(shè)為外鍵:
在建立資料表時(shí) 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 後面接著的即是此外鍵的名稱,另一個(gè)重點(diǎn)是記得 customers 資料表中需將 C_Id 設(shè)為主鍵。
更改資料表限制 ALTER TABLE
ALTER TABLE ordersAdd FOREIGN KEY (C_id) REFERENCES customers(C_id);替外鍵命名與多欄位的外鍵:
ALTER TABLE ordersADD CONSTRAINT fk_Customer_id FOREIGN KEY (C_id) REFERENCES customers (C_id);移除資料表限制 ALTER TABLE
MySQLALTER TABLE orders DROP FOREIGN KEY fk_Customer_Id;新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注