zoukankan      html  css  js  c++  java
  • 多表连接查询

    多表连接查询:
    1.交叉连接(笛卡尔积):所有情况的组合 ,不推荐使用
    select * from emp ,dept ;


    2.内连接 :多张表通过 相同字段进行匹配,只显示匹配成功的数据
    a.
    select * from emp e ,dept d
    where e.deptno = d.deptno ;
    b.
    select * from emp e
    inner join dept d
    on e.deptno = d.deptno
    不等值连接(一般不用)
    select * from emp e ,dept d
    where e.deptno <= d.deptno ;

    3.外连接
    左外连接:以左表为基准(左表数据全部显示),去匹配右表数据,如果匹配成功 则全部显示;匹配不成功,显示部分(无数据部分 用NULL填充)
    a.(oracle独有)
    select * from emp e ,dept d
    where e.deptno = d.deptno(+) ;


    b
    select * from emp e
    left outer join dept d
    on e.deptno = d.deptno


    右外连接
    右外连接:以右表为基准(右表数据全部显示),去匹配左表数据,如果匹配成功 则全部显示;匹配不成功,显示部分(无数据部分 用NULL填充)
    a.(oracle独有)
    select * from emp e ,dept d
    where e.deptno(+) = d.deptno;


    b
    select * from emp e
    right outer join dept d
    on e.deptno = d.deptno


    全外连接 = 左外 + 右外连接 - 去重


    自连接:将一张表 通过别名 “视为”不同的表


    查询 员工姓名,以及 该员工的领导姓名
    select e.ename ,b.ename from emp e,emp b
    where e.mgr =b.empno;
    //员工表的领导编号mgr = 领导表的 员工编号号empno


    自连接 比较费性能: emp -> e,b

    优化?
    层次连接:
    select level ,empno, ename ,mgr from emp
    connect by prior empno=mgr
    start with mgr is null
    order by level ;

  • 相关阅读:
    Oracle 常用函数备查
    apt-get/dpkg常用指令备查
    vmware下虚拟机不能上网问题解决
    [转]JAVA并发编程学习笔记之Unsafe类
    solaris 下查看某程序所开端口
    java 守护线程
    Java实现非法访问异常
    Java使用ListIterator逆序ArrayList
    Java实现Map集合二级联动
    Java使用String类格式化当前日期
  • 原文地址:https://www.cnblogs.com/mayouyou/p/13198674.html
Copyright © 2011-2022 走看看