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 ;

  • 相关阅读:
    python 发送中文名邮件乱码问题
    python---django
    python中获取文件目录的方法
    python 读取文件的常用方法
    python读取文件的常用方法
    python数据库调用
    mysql数据库主从同步状态正常,无异常报错,数据不能同步
    Python小脚本
    语句和语法
    CIDR详解和ip最长地址前缀匹配
  • 原文地址:https://www.cnblogs.com/mayouyou/p/13198674.html
Copyright © 2011-2022 走看看