• 多标联查-外连接


    3)外连接
      等值连接,需要两个表的关联字段等值才将结果返回。
    如果需要将某一个表记录全部返回,即使另一个表找不到
    对等字段记录,此时可以使用外连接。
      *a.左外连接
     
      ----使用LEFT OUTER JOIN...ON...语法------
      select e.ename,e.sal,e.deptno,d.dname
      from emp e left outer join dept d
         on(e.deptno=d.deptno);
       
     A left outer join B on(...)
     以A表记录显示为主,B表记录为补充.
    当A表记录在B表找不到对等记录时,B以NULL方式补充。
     
      b.右外连接
     select e.ename,e.sal,e.deptno,d.dname
      from emp e right outer join dept d
         on(e.deptno=d.deptno);
     上面语句是以dept表显示为主,emp为补充.如果emp没有
    对等记录,字段值以NULL补充。
     
    select * from ja
     right outer join jb on(ja.id=jb.id);
    等价于
    select * from jb
     left outer join ja on(ja.id=jb.id)
     
    ----在JOIN...ON之前的外连接写法--------
    //(+)所在表为补充表,另一方是主表
    select * from ja,jb
    where ja.id(+)=jb.id; //jb为主,ja为补充
     
      c.全外连接
       全外连接=左外连接+右外链接-(重复记录)
      select * from ja
        full outer join jb on(ja.id=jb.id);
     
     //查询部门编号,部门名称,部门员工人数
      select d.deptno,
             d.dname,
             count(e.ename) num
      from DEPT d left outer join EMP e
        on(d.deptno=e.deptno)
      group by d.deptno,d.dname
      order by d.deptno;
     
     
    EMPNO ENAME DEPTNO DNAME
    ... ... 10 ...
    NULL NULL 40 ...
    NULL NULL 50 ...
    //按部门分组统计,count(*)和count(ename)的区别
    count(*) = 1
    count(ename) = 0
     
    //查询部门在NEW YORK和CHICAGO的员工编号和员工名称
    select e.empno,e.ename
    from DEPT d join EMP e on(d.deptno=e.deptno)
    where d.loc in ('NEW YORK','CHICAGO');
  • 相关阅读:
    一起来学SpringBoot(十七)优雅的参数校验
    使用JDBC创建出版社和书籍管理系统
    springMvc(初识+操作步骤)
    模拟Java-Sping,实现其IOC和AOP核心
    python多个装饰器的执行顺序
    JAVA——不简单的fianl关键字
    Java HTTP 组件库选型看这篇就够了
    这一次,我连 web.xml 都不要了,纯 Java 搭建 SSM 环境!
    13数据结构与算法分析之---链式栈
    12数据结构与算法分析之---顺序栈
  • 原文地址:https://www.cnblogs.com/yunman/p/5497558.html
Copyright © 2020-2023  润新知