0


MySQL的内,外,自连接复习

1.找出每个员工的薪资等级,要求显示员工名,薪资,薪资等级

这道题是内连接中的非等值连接(join前的inner是可以省略的)

  1. 将emp表记作e,salgrade表记作s;

  2. 连接条件:e表的薪资(sal)在 s表的薪资等级对应的范围内

e.sal between s.losal and hisal

 select 
    e.ename,e.sal,s.grade
 from
    emp e
 join
    salgrade s
 on
    e.sal between s.losal and s.hisal;

2.查询员工的上级领导,要求显示员工名和对应的领导名

empno是对应人的编号,ename是每个人的名字,mgr表示该员工对应的领导的编号。

内连接一张表看作两张表。


emp a表看作员工表,emp b 表看作领导表 ,

用员工表(a)的 对应领导编号(mgr) 找领导表(b)中找对应的编号(empno) 所对应的人名(ename)

连接条件:a.mgr=b.empno

select 
    a.ename as '员工名' ,b.empno as '领导名' 
from 
    emp a 
join 
    emp b 
on 
    a.mgr=b.empno ;

打印结果:

外连接的引入

在这里我们发现少了一个员工KING(KING所对应的领导是NULL),也就是说内连接只能找出匹配条件的信息(没有主次关系),但是我们有时候是需要全部信息。

所以我们就可以引入外连接【left (outer) join / right (outer) join ,outer一般就省略了 】,left join 就表示左边是主表(左连接和右连接是可以相互转换的),无论是否与辅表内容匹配都得打印。

eg:现在主查a表中的员工名,捎带b表中的领导名,就 a left join b,

查询员工的上级领导,要求显示所有员工名和对应的领导名

子查询可参考http://t.csdn.cn/3yCnd

五月

这个月51假玩了五天,这周期中考试,还没考完(😭),打算这周内复习完数据库基础并且完成操作系统中进程,线程等知识的总结,复习一下常见的排序方法,强化写代码的能力(再练几个题)。时间太快了,俩月都过去了,不能再分心了......

标签: mysql 数据库

本文转载自: https://blog.csdn.net/m0_74106420/article/details/130600871
版权归原作者 sqyaa. 所有, 如有侵权,请联系我们删除。

“MySQL的内,外,自连接复习”的评论:

还没有评论