mysql語句宣告外來鍵
環境
在Navicat 中進行mysql的語句操作
示例
1 建立一張員工表:
CREATE TABLE employ(id INT PRIMARY KEY,ename VARCHAR(20),deptId INT);
2 插入員工資料:
INSERT INTO employ VALUES(1,'李四','軟體開發部'); INSERT INTO employ VALUES(2,'王五','應用維護部'); INSERT INTO employ VALUES(3,'李四1','軟體開發部'); INSERT INTO employ VALUES(4,'王五1','應用維護部');
在這裡我們會發現,軟體開發部與應用維護部會重複的出現,這時候,我們將一張表拆為兩張表,一張是員工表,一張是部門表,情況如下:
1 建立員工表:
CREATE TABLE employ(id INT PRIMARY KEY,ename VARCHAR(20),deptId INT);
2 建立部門表:
CREATE TABLE dept(id INT PRIMARY KEY,deptName VARCHAR(20));
3 向兩張表中同時插入資料:
- 部門表:
INSERT INTO dept(id,deptname) VALUES(1,'軟體開發部'); INSERT INTO dept(id,deptname) VALUES(2,'應用維護部'); INSERT INTO dept(id,deptname) VALUES(3,'祕書部');
2 員工表:
INSERT INTO employ VALUES(1,'張三',1);
INSERT INTO employ VALUES(2,'張二三',2);
INSERT INTO employ VALUES(3,'張三三',3);
但是在上面插入員工表的過程中,我們可能會出現這樣的操作:
INSERT INTO employ VALUES(1,'張三',4);
其中這裡的4,在部門表中沒有相對應的部門,所以我們需要重新設計員工表來進行一個約束,我們先刪除表再重新建立一個表
1 刪除表:
DROP TABLE employ;
2 建立表:
CREATE TABLE employ(id INT PRIMARY KEY,ename VARCHAR(20),deptId INT, CONSTRAINT employ_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id));
這裡分段顯示下,會看得清楚一些,從這裡我們可以看到主要的是後面的關鍵字CONSTRAINT employ_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id))
外來鍵名稱:employ_dept_fk (本張表_關聯的表_fk)
FOREIGN:引用的意思
deptId:本張表所要關聯外來鍵的那個欄位
REFERENCES:參考的表
dept(id):來自dept表的id欄位
當表設計好的時候,我們再進行資料插入,就會出現報錯,插入資料插不進去的情況了。
外來鍵宣告約束:
CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
主要資訊
外來鍵解決資料冗餘,獨立出來兩張表
外來鍵的作用:約束兩張表的資料
個人網站:http://xudailong.cc
關注「蛇崽網盤教程資源」公眾號 ,在微信後臺回覆「領取資源」,獲取IT資源200G乾貨大全。
更多資源請訪問:
https://blog.csdn.net/xudailong_blog/article/details/78762262
某課視訊教程
https://xudailong.cc/2018/09/30/muke-courses/
關注「蛇崽網盤教程資源」公眾號 ,在微信後臺回覆「領取資源」,獲取IT資源200G乾貨大全。
在微信後臺回覆「130個小程式」,即可免費領取享有匯入就能跑的微信小程式