Oracle数据库-连表查询(92语法和99语法)的使用

连表查询

适用条件

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

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
    

[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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值