当前位置:   article > 正文

Oracle数据库-连表查询(92语法和99语法)的使用_oracle主表连接查询字段当条件

oracle主表连接查询字段当条件

连表查询

适用条件

当要查询的数据来自于多个数据源时使用连表查询

92语法

语法

  • select 数据 from 数据源1,数据源2… where 行过滤条件 group by 分组字段1,分组字段2… having 组过滤信息 order by 排序字段1,… desc|asc;

执行流程

  • from --> where --> group by --> having --> select --> order by

表连接条件

  • 过滤通过连表产生的不满足要求的表连接数据
  • 实现方式
  • 等值连接
    • 判断两个数据源中的某个字段值相等或者不相等,用“=” 判断
    • 非等值连接
    • 判断区间,判断范围的条件,不用 “ =” 判断,可以用between and来判断
  • 分类
  • 自连接
    • 特殊的等值连接 (来自于同一张表)
    • select e.ename, m.ename from emp e, emp m where e.mgr = m.empno;
    • 内连接
    • 满足连接条件查询到不满足过滤掉
    • 外连接
    • 某一个数据源中的数据不满足连接条件的时候也能显示
      • 左外连接|左连接
      • from后面,主表在左边
        • select * from emp e1,emp e2 where e1.mgr=e2.empno(+);
      • 右外连接|右连接
      • from后面,主表在右边
        • select * from emp e1,emp e2 where e1.mgr(+)=e2.empno;
  • 主表
  • 主表中的数据无论是否满足连接条件都能显示
    • 位置
    • 在连接条件位置,(+)的对面是主表

99语法

交叉连接

  • cross join —>笛卡尔积
  • select 数据 from 数据源1 cross join 数据源2

等值连接和非等值连接

  • 等值连接

  • 自然连接 natural join -->自动做等值连接(根据同名字段|主外键字段)

    • 在自然连接中同名字段不能使用指定的表限定词
    • join using 连接(同名字段) -->根据给定的同名字段做等值连接
    • 在join…using中同名字段不能使用指定的表限定词
  • 非等值连接

  • 判断区间,判断范围的条件

    - select ename,sal,job,grade from emp e join salgrade s on sal between losal and hisal
    - select * from emp e1 inner join emp e2 on e1.mgr=e2.empno
    
    • 1
    • 2

[inner] join on 连接

  • 数据源1 +join +数据源2 +on + 连接条件
  • 等值连接 非等值 自连接 都可以实现
  • 在join…on中同名字段的必须使用制定的表限定词

内连接和外连接

  • 内连接
  • 数据源1 + (inner) join +数据源2
    • 默认 join 为内连接
  • 外连接
  • 主表中的数据无论是否满足连接条件都显示
    • 左外连接|左连接 : left join
    • select * from emp e1 left join emp e2 on e1.mgr=e2.empno;
    • 右外连接|右连接 : right join
    • select * from emp e1 right join emp e2 on e1.mgr=e2.empno;

全连接

  • full join on|using
  • 两张表都是主表
  • 全连接 满足直接匹配,不满足 相互补充null ,确保 所有表的记录 都至少出现一次
  • select * from emp e1 full join emp e2 on e1.mgr=e2.empno
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/189069
推荐阅读
相关标签
  

闽ICP备14008679号