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