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))

mysql语句声明外键

外键名称:employ_dept_fk (本张表_关联的表_fk)
FOREIGN:引用的意思
deptId:本张表所要关联外键的那个字段
REFERENCES:参考的表
dept(id):来自dept表的id字段


当表设计好的时候,我们再进行数据插入,就会出现报错,插入数据插不进去的情况了。

外键声明约束:

CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
主要信息

mysql语句声明外键

外键解决数据冗余,独立出来两张表

外键的作用:约束两张表的数据


个人网站: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个小程序」,即可免费领取享有导入就能跑的微信小程序

mysql语句声明外键