ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

010、多表查询 ( join on 查询 )

2021-10-11 17:34:08  阅读:327  来源: 互联网

标签:join sal 查询 010 emp 多表 deptno 连接 select


 

连接查询:也可以叫跨表查询,需要关联多个表进行查询。

主要用到 join on
# ---------------------------- 010、多表查询 ( 连接查询 ) -----------------------
# 显示每个员工信息,并显示所属的部门名称
select e.*,d.dname from emp e join dept d on e.deptno=d.deptno;

# (内连接)显示薪水大于 2000 的员工信息,并显示所属的部门名称
select e.*,d.dname from emp e join dept d on e.deptno=d.deptno where e.sal>2000;

# (外连接)显示员工信息,并显示所属的部门名称,如果某一个部门没有员工,那么该部门也必须显示出来
#  右连接
select e.*,d.dname from emp e right join dept d on e.deptno=d.deptno;
#  左连接:
select e.*,d.dname from dept d right join  emp e on e.deptno=d.deptno;
# 以上左、右连接两个查询效果相同

# 查询所有员工的信息,显示员工名,领导名。
select e.ename, l.ename from emp e left join emp l on e.mgr=l.empno;

 

连接分类: 内链接   * 表 1 inner join 表 2 on 关联条件   * 做连接查询的时候一定要写上关联条件   * inner 可以省略 外连接   *左外连接     * 表 1 left outer join 表 2 on 关联条件     * 做连接查询的时候一定要写上关联条件     * outer 可以省略   *右外连接     * 表 1 right outer join 表 2 on 关联条件     * 做连接查询的时候一定要写上关联条件     * outer 可以省略 *左外连接(左连接)和右外连接(右连接)的区别: *左连接以左面的表为准和右边的表比较,和左表相等的不相等都会显示出来,右表符合条件的显示,不符合条件的不显 示 *右连接恰恰相反,以上左连接和右连接也可以加入 outer 关键字,但一般不建议这种写法,如:   一般在写查询语句时,建议先按以下这样写, 这样思路比较清晰。
# (内连接)显示薪水大于 2000 的员工信息,并显示所属的部门名称
select
     e.*,d.dname 
from 
    emp e 
join 
    dept d 
on 
    e.deptno=d.deptno 
where 
    e.sal>2000;

 

等值连接 与 非等值连接 等值连接:e.deptno=d.deptno
# (内连接,等值连接)显示薪水大于 2000 的员工信息,并显示所属的部门名称
select e.*,d.dname from emp e join dept d on e.deptno=d.deptno where e.sal>2000;
# 

非等值连接:e.sal between s.losal and s.bisal ,条件不是一个等量关系,称为非等值连接。

# 非等值连接 ,找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级
select
    e.ename, e.sal, s.grade
from
    emp e
join
    salgrade s
on
    e.sal between s.losal and s.hisal;

 

三张表连接

语法格式:
# 3、三张表连接
# 语法格式:
select
    ...
from
    表a
join
    表b
on
    表a和表b的连接条件
join
    表c
on
    表a和表c的连接条件
right join
    表d
on
    表d和表a的连接条件
表a和表b连接完,再和表c连接,再和表d连接。 一条sql语句中内连接和外连接可以混合使用。
use bjpowernode;
select * from salgrade;

# 找出每个员工的部门名称及工资等级,要求显示员工名、部门名、薪资、薪资等级
select
    e.ename, d.dname, e.sal, s.grade
from
    emp e
join
    dept d
on 
    e.deptno=d.deptno
join
    salgrade s
on
    e.sal between losal and hisal;
 

 

# 找出每个员工的部门名称及工资等级,上级领导,要求显示员工名、领导名,部门名、薪资、薪资等级
# 带上左连接,会显示king,如果不带left不会显示king,因为king的领导为null
select
    e.ename, l.ename, d.dname, e.sal, s.grade
from
    emp e
join
    dept d
on
    e.deptno=d.deptno
join
    salgrade s
on
    e.sal between s.losal and s.hisal
left join
    emp l
on
    e.mgr=l.empno;

 

标签:join,sal,查询,010,emp,多表,deptno,连接,select
来源: https://www.cnblogs.com/qq-2780619724/p/15394272.html

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

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

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

ICode9版权所有