mysql多表查询学习

版权声明:本文为徐代龙原创文章,未经徐代龙允许不得转载。网络资源网站:xudailong.cc 福利网站:www.00reso.com 公众号:蛇崽网盘教程资源 https://blog.csdn.net/xudailong_blog/article/details/84252310

距离上一篇文章一分钟了解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)要求:查询员工姓名及所在部门
多表查询的规则:

  1. 确定哪些表
  2. 确定哪些字段
  3. 表与表之间的连接条件(规律:连接条件数量是表数量-1)
使用内连接查询(使用频率最多的情况)
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

某课视频教程

https://xudailong.cc/2018/09/30/muke-courses/

关注「蛇崽网盘教程资源」公众号 ,在微信后台回复「领取资源」,获取IT资源200G干货大全。

在微信后台回复「130个小程序」,即可免费领取享有导入就能跑的微信小程序

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xudailong_blog/article/details/84252310
今日推荐