距离上一篇文章一分钟了解CONSTRAINT约束的用法,我们了解到在工作中,很多时候我们都会将一个很大的表拆解成多个小的表,来去除数据冗余问题,一方面可以提高数据查询的速度,另外一方面,易于我们进行数据表的管理。
一般的,查询单张表,我们可能是进行如下的操作。
SELECT empName FROM employee;
但是如果是两张表联系在一起的话,我们查询的方式就需要改变一下了。下面将说下如何进行多表查询操作。
(1)创建两张表
-- 部门表
CREATE TABLE dept(id INT PRIMARY KEY,deptname VARCHAR(20));
-- 员工表
CREATE TABLE employ(id INT PRIMARY KEY,ename VARCHAR(20),deptId INT,
CONSTRAINT employ_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id));
(2)插入数据到表中:
- - 插入部门表
INSERT INTO dept(id,deptname) VALUES(1,'软件开发部');
INSERT INTO dept(id,deptname) VALUES(2,'应用维护部');
INSERT INTO dept(id,deptname) VALUES(3,'秘书部');
- - 插入数据到员工表
INSERT INTO employ(id,ename,deptId) VALUES(1,'周杰伦',1);
INSERT INTO employ(id,ename,deptId) VALUES(2,'李易峰',2);
INSERT INTO employ(id,ename,deptId) VALUES(3,'鹿别山',3);
(3)要求:查询员工姓名及所在部门
多表查询的规则:
select empName,deptName -- 2 : 确定查询哪些字段
from employee,dept -- 1 : 确定是哪些表
where employee.deptId=dept.id; -- 3 :表与表之间的连接条件
select empName,deptName
from employee
inner join dept
on employee.deptId=deptid;
针对部分有Null的情况下的查询
select d.deptName, e.empName
from dept d
left outer join employee e
on d.id=e.deptId;
select d.deptName, e.empName
from employee e
right outer join dept d
on d.id=e.deptId;
上面就是生活中常用的多表查询,如果再遇到难点的查询,再面向百度进行Sql
吧!
个人网站:http://xudailong.cc
关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。
更多资源请访问:
https://blog.csdn.net/xudailong_blog/article/details/78762262
关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。
在微信后台回复「130个小程序」,即可免费领取享有导入就能跑的微信小程序