• 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空值补全。

  • 相关阅读:
    asp的多国语言构思
    制作IE和FF都支持的无限级关联菜单
    破解网络尖兵(真正对付限制ADSL路由共享的方法)
    Asp透过系统DSN链接mysql数据库
    找到了一首曾经很喜欢的老歌
    生意人应具备的性格
    简单的操作让你的迅雷变的清爽
    线路分流自动跳转代码
    通过regsvr32注册DLL可以解决的一些疑难杂症
    页面无刷新超时自动退出
  • 原文地址:https://www.cnblogs.com/jasonboren/p/10914209.html
Copyright © 2020-2023  润新知