1. 程式人生 > >mysql語句宣告外來鍵

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 向兩張表中同時插入資料:

  1. 部門表:
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個小程式」,即可免費領取享有匯入就能跑的微信小程式

在這裡插入圖片描述