• oracle 多表查询


    1、等值连接:取关系列相同的记录
    select * from emp e,dept d where e.deptno=d.deptno;
    查出emp、dept表中deptno列相同的记录

    2、非等值连接:取关系列不相同的记录
    select * from emp e,dept d where e.deptno>d.deptno;
    查出emp表中deptno大于dept表中的记录
    3、外连接:左左外连接以左表为主,右外连接以右表为主
    右连接,以右表为主,右表所有记录多查询出来,左表只查出复合条件的记录
    select * from emp e,dept d where e.deptno(+)=d.deptno;
    select * from emp e right outer join dept d on e.deptno=d.deptno;

    左连接,以左表为主,左表所有记录多查询出来,右表只查出复合条件的记录
    select * from emp e,dept d where e.deptno=d.deptno(+);
    select * from emp e left outer join dept d on e.deptno=d.deptno;

    全连接 ,所有记录来自于两张表,用null值来匹配缺失值
    select * from emp e full join dept d on e.deptno=d.deptno;

    4、自连接:特殊等值连接,取同一张表不同角度看待的记录
    select e1.ename || ' 领导是' || e2.ename from emp e1, emp e2 where e1.mgr = e2.empno;

    5、交叉连接产生一个笛卡尔积 cross join
    笛卡尔积:多表查询时,查询记录的行数等于所有表行数的乘积,列数等于所有表列数之和
    select * from emp ,dept;
    select * from emp cross join dept;

    6、自然连接 natural join (注)所有相同列等值连接
    natural join 子句是基于两个表中列名完全相同的列产生连接,查询连接列的值相等的记录,不保留重复的属性。
    natural join 子句中的列不能使用表别名做前缀。如:e.deptno='10' 或 d.deptno='10'

    查出两表中相同列值相同的记录
    select * from emp e natural join dept d;

    查出两表中指定列值相同的记录
    select * from emp e natural join dept d where deptno='10';

    7、using(X)创建连接
    using子句引用的列在sql任何地方都不能使用表名或别名做前缀

    查出两表中相同列值相同的记录
    select * from emp e join dept d using(deptno);

    查出两表中指定列值相同的记录
    select * from emp e join dept d using(deptno) where deptno='30';

    8、join on 创建连接 ,不同于自然连接,使用join on 可以指定连接列和设置任意的连接条件

    select * from emp e join dept d on e.deptno=d.deptno where e.deptno='10';

    join on 可以进行两张以上的表连接查询
    select * from emp e join dept d on e.deptno=d.deptno join salgrade s on e.sal between s.losal and s.hisal where e.deptno='10';

  • 相关阅读:
    verilog之计数器0~9999——数码管显示
    C语言的谜题
    modelsim SE6.2b的常用问题
    [转载]MDK常见报错(编译arm)
    Nios II之LED实验(SDRAM+EPCS4配置)————基于Altera的DE0开发板
    poj2210
    poj1161
    poj1555
    poj2337
    poj1107
  • 原文地址:https://www.cnblogs.com/dyfbk/p/7649581.html
Copyright © 2020-2023  润新知