SQL FOREIGN KEY 外键限制学习笔记
2017-02-10 22:34
337 查看
转载自这里
简介:
外鍵是一個 (或多個) 指向其它資料表中主鍵的欄位,它限制欄位值只能來自另一個資料表的主鍵欄位,用來確定資料的參考完整性 (Referential Integrity)。
ps:如果想在 MySQL 資料庫中使用外鍵限制,必需讓資料表使用 InnoDB 儲存引擎。
讓我們簡單了解一下什麼是外鍵:
這是一個客戶資料表 customers
而這是客戶訂單的資料表 orders
在這裡我們會想有一個限制,就是在客戶訂單資料表中的客戶,都一定要在 customers 資料表中存在。所以我們需要在 orders 資料表中設定一個外鍵,再將此外鍵指向 customers 資料表中的主鍵,以確定所有在 orders 資料表中的客戶都存在於 customers 資料表中,才不會有任何幽靈訂單的出現!
FOREIGN KEY Constraint
假設我們要將 customer 資料表中的 C_Id 欄位設為外鍵:
在建立資料表時 CREATE TABLE
替外鍵命名與多欄位的外鍵:
我們限制 C_Id 為外鍵,CONSTRAINT 後面接著的即是此外鍵的名稱,另一個重點是記得 customers 資料表中需將 C_Id 設為主鍵。
更改資料表限制 ALTER TABLE
替外鍵命名與多欄位的外鍵:
移除資料表限制 ALTER TABLE
简介:
外鍵是一個 (或多個) 指向其它資料表中主鍵的欄位,它限制欄位值只能來自另一個資料表的主鍵欄位,用來確定資料的參考完整性 (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;
相关文章推荐
- 黑马程序员之SQL 学习笔记:外键对数据更新的影响
- SQL学习笔记--限制于排序
- SQL学习笔记(4)之外键
- 黑马程序员—学习笔记之SQL数据分组、限制结果集行数
- 有关sql的参考资料,学习笔记.
- sql学习笔记(一)----Transact语言
- [SQL学习笔记之一]SQLServer的内置XML支持
- 学习MSSQL2005笔记1--T-SQL的变化
- PB学习笔记之SQL语句
- SQL学习之 对GROUP BY 和 HAVING 的理解 学习笔记
- DB2 SQL存储过程学习笔记
- SQL学习笔记----SQL2000中的角色及功能
- sql 2005学习笔记1
- Oracle SQL开发学习笔记
- PL/SQL学习笔记一
- JavaScript学习笔记5--限制textarea的字符数
- [学习笔记][asp.net下SQL语句无法向ACCESS数据库插入数据的小提示
- 学习笔记-JSTL标签库--C SQL
- SQL笔记:限制条码和删除标记为0的记录唯一
- JavaScript学习笔记5--限制textarea的字符数