ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL--外连接查询

2021-10-16 20:02:57  阅读:145  来源: 互联网

标签:-- 查询 部门 MySQL employee deptno 员工 连接


外连接查询

特点:查询结果至少是一个表的所有记录

 语法:select f1,f2,f3,....
        from table1 left/right outer join table2
        on 条件;

(1)左外连接

from table1 left outer join table2

驱动表 table1
匹配表 table2

查询结果是table1驱动表的所有记录

回顾:查询每个员工的姓名,职位和领导的姓名
使用内连接(自连接)的连接方式
分析:
表 t_employee e 员工表
t_employee m 领导表
关联条件 员工表.领导编号=领导表.员工编号
e.MGR=m.empno

select e.ename,e.job,m.ename
      from t_employee e inner join t_employee m
      on e.MGR=m.empno;

查询结果是13条数据,少了一条king的数据,king没有
上级领导,所以king这条数据没有显出出来。

内连接查询的特点:符合条件查询出来,不符合条件过滤掉。

使用左外连接查询

分析:
驱动表 t_employee e 员工表
匹配表 t_employee m 领导表
关联条件 e.MGR=m.empno

select e.ename,e.job,m.ename
      from t_employee e left outer join t_employee m 
      on e.MGR=m.empno;

查询结果为14条数据,t_employee e员工表为驱动表,
查询结果显示驱动表中所有的数据。

t_employee员工表插入一条在50部门的员工信息。
在t_dept表中只有10,20,30,40部门,没有50部门。

 insert into t_employee values
 (7999,'xiaohong','clerk',7782,19811016,5200,null,50);

说明:
t_employee 员工表
15条数据,员工分别在10,20,30,50部门
t_dept 部门表
4条数据,有10,20,30,40部门
例子:查询每个员工的编号、姓名、职位、部门名称和位置

方式1:使用内连接查询的方式

分析:表 t_employee e 员工表
t_dept d 部门表
关联关系 员工表的部门编号=部门表的部门编号
e.deptno=d.deptno

select e.empno,e.ename,e.job,d.dname,d.loc
     from t_employee e inner join t_dept d
     on  e.deptno=d.deptno;

查询结果是14条数据,内连接查询的特点是符合条件的
会查询出结果,不符合条件的会过滤掉。

xiaohong是50部门,在部门表中未匹配到50部门,过滤掉
operations是40部门,未匹配到有员工在40部门,过滤掉

方式2:使用左外连接查询的方式

分析:驱动表 t_employee e 员工表
匹配表 t_dept d 部门表
关联关系 e.deptno=d.deptno
查询的结果是驱动表中的所有数据

select e.empno,e.ename,e.job,d.dname,d.loc
     from  t_employee e left outer join t_dept d
     on e.deptno=d.deptno;

查询结果是15条数据,查询结果是驱动表t_employee表中的全部数据,外连接查询的特点是符合关联条件的正常显示数据,如果不符合关联条件,查询不到数据,会使用null代替。

(2)右外连接

  from table1 right outer join table2

驱动表 table2
匹配表 table1

查询结果是table2驱动表的所有记录

使用右外连接的方式

分析:
驱动表 t_dept d 部门表
匹配表 t_employee e 员工表
关联关系 d.deptno=e.deptno

select e.empno,e.ename,d.deptno,d.dname,d.loc
     from t_employee e right outer join t_dept d
     on e.deptno=d.deptno;

显示结果是15条数据,显示的结果是部门表的全部数据,部门表是4条数据,显示结果是15条,因为有的部门匹配到了多名员工的数据。

10部门20部门30部门都匹配到了多名员工的信息,40部门没有匹配到员工的信息,用null代替。

标签:--,查询,部门,MySQL,employee,deptno,员工,连接
来源: https://blog.csdn.net/gezongbo/article/details/120802999

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有