SQL--4--查--连接查询(内连接、外连接、多表连接)


基础知识:笛卡尔积现象,在知识点中以写。网址如下:

https://www.cnblogs.com/ukimiya/articles/15355326.html


 

一.连接查询

  1.单表查询和连接查询:

    单表查询:从一张表中单独查询,称为单表查询。

    连接查询:emp表和dept表联合起来查询数据,从emp表中取员工名字,从dept表中取部门名字。这种跨表查询,多张表联合起来查询数据,被称为连接查询。

  2.连接查询的分类:

    ①按年代分类:

SQL92:1992年的时候出现的语法

SQL991999年的时候出现的语法,重点学习SQL99。

    ②按表连接方式分类:

内连接:A和B连接,2表没有主次关系,平级。

等值连接

非等值连接

自连接

外连接:A和B连接,产生主次关系,join后是主表

左外连接(左连接)

右外连接(右连接)

全连接(不讲)。

二.内连接(等值、非等值、自)--inner join....on....

  1.等值连接:

    举例:查询员工的员工名(ename--emp表)和部门名(dname--dept表)

    语句:

    select e.ename,d.dname

    from emp e

    inner join dept d

    on e.deptno = d.deptno;

    

  2.非等值连接:

    举例:查询每个员工的薪资等级(grade),显示员工名(ename)、薪资(sal)、薪资等级(grade)

    语句:

    select e.ename, e.sal, s.grade

    from emp e

    inner join salgrade s

    on e.sal between s.losal and s.hisal;

    

  3.自连接:同表自连接

    举例:查询员工的上级领导mgr,empno,ename),要求显示员工名(ename)和对应的领导名(ename)

    语句:

    select a.ename as '员工名', b.ename as '领导名'

    from emp a   //员工表

    join emp b     //领导表

    on a.mgr = b.empno;  //员工的领导编号 = 领导的员工编号

    

三.外连接(左外、右外)--left/right outer join ... on ...

  1.左连接:left
       

  2.右连接:right

    

  3.left / right的意义:

    join关键字右边的表A看成主表,将A表的数据全部查询出来,捎带着关联查询左边的表B。

  4.Q:外连接查询结果条数一定是  >=  内连接的查询结果条数?

     A:是的。

四.多表连接

  1.一条SQL中内连接+外连接混合:
   

五.查询结果去重--distinct

  1.格式:select distinct job from emp;

  2.使用注意事项:

    ①distinct只能出现在所有字段的最前方;

        ×: select ename,distinct job from emp;

    ②distinct出现在job,deptno两个字段之前,表示两个字段联合起来去重。

     select distinct job,deptno from emp;

    ③举例:

    


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM