zoukankan      html  css  js  c++  java
  • oracle中的多表查询和子查询以及一些注意事项

    多表查询就是使用两张表及其以上的查询。首先需要知道几个名词,笛卡尔积,内连接,外连接,子查询。

    1)笛卡尔积

      所谓笛卡尔积其实就是两张表数据的条数相乘得到的最后结果,例如表1有10条数据,表2有4条数据,那么经过笛卡尔积之后最后的结果为40条数据,使用笛卡尔积缺点比较多,会产生很多没有用的数据。

    2)内连接

      内连接分为隐式和显示两种,显示就是使用inner join关键字,而隐式就是使用where关键字,根据关联字段建立的条件,例如where t1.id=t2.id 这就是隐式。

    3)外连接

      外连接也分两种,左外连接,右外连接。

      左外连接:使用left join 关键字,它返回的是左表的所有记录,如果右表中没有满足条件的记录,则返回空值。

      右外连接:使用right join 关键字,意思和左外连接相反。  

      在oracle中有一个特殊的符号(+),用它也可以达到左右外连接的效果,用法例如:e2.empno(+) =e3.empno,表示如果e3表在e2表中没有满足关系的记录,就返回空值。

    4)子查询

      子查询就是嵌套查询,例如 select .. from (selec....) where(select....),写法不一样,但就是这样的。

    5)exists 关键字

      exists(查询语句):数据量大时非常高效,当查询语句有结果的时候返回true否则返回false
    例如查询有员工的部门信息

    select *
    from dept d
    where exists
    (select * from emp e where e.deptno=d.deptno);

    6)集合运算

      集合运算:(将查询结果合并,应用场景:应用在来自不同数据的表时)
      交集:intersect
      并集:union(去除重复的,并且排序)/union all(不去除重复的)
      差集:minus关键字

      集合运算的注意事项:
        1.列的类型要一致
        2.按照顺序书写
        3.列的数量要一致,如果不足用null空值补全。

  • 相关阅读:
    vue组件重新加载的方法
    事件触发方法获取当前值的写法 (含方法要传2个参数的写法)
    mac 解压 rar压缩文件
    表格
    小米8安装charles证书方法
    视频结构化技术栈全解析
    多目标跟踪全解析,全网最全
    SpringBoot
    技术方案设计的方法
    Java的强引用、软引用、弱引用、虚引用
  • 原文地址:https://www.cnblogs.com/jasonboren/p/10914209.html
Copyright © 2011-2022 走看看