东软实习之数据库(8)——集合运算

    ##集合运算

        集合运算:是用来把两个或多个查询的结果集做并、交、差的集合运算,包含集合运算的查询称为复合查询。

        

         所有的集合运算符与等号的优先级相同,如果 SQL 语句包含多个集合运算符并且没有圆括号明确地指定另一个顺序,Oracle 服务器将以从左到右的顺序计算。

         注:INTERSECT (相交) 和 MINUS (相减) 运算不是 ANSI SQL-99 兼容的,他们是 Oracle 特定的。


 

      #联合运算

          

        UNION (联合)运算   

          UNION 运算返回所有由任一查询选择的行。用UNION 运算从多表返回所有行,但除去任何重复的行。   

          原则

        • 多个被联合的查询语句所选择的列数和列的数据类型必须一致,列的名字不必相同。
        • 如果多个查询结果都有NULL值,整个结果中只包含一个NULL值
        • IN 运算有比 UNION 运算高的优先级。
        • 在默认情况下,按照第一列的升序排序。
        • 每个查询不能包含自己的Order by语句,只能在联合之后使用Order by 。

        #完全联合运算

          

          完全联合 (UNION ALL) 运算 原则 和联合不同,重复的行不被过滤,并且默认情况下输出不排序。 如果每个查询结果中都有NULL值,也不被去掉。

           注意:使用UNION ALL会比UNION的速度快,因为省去了去掉重复记录的时间。


        #相交运算

           

            相交运算 用相交运算返回多个查询中所有的公共行。   

            原则

          • 在查询中被 SELECT 语句选择的列数和数据类型必须与其他查询中所使用的所有的 SELTCT 语句中的一样,但列的名字不必一样。
          • 相交不忽略空值。

        #相减运算

         

          相减运算 用相减运算返回由第一个查询返回的行,那些行不出现在第二个查询中 (第一个 SELECT 语句减第二个 SELECT 语句)。

          原则

        • 在查询中被 SELECT 语句选择的列数和数据类型必须与在其他查询中所使用的所有的 SELTCT 语句中的一样,但列的名字不必一样。
        • 相减运算不忽略空值

    ##Oracle 服务器和集合运算

      • 在两个 SELECT 列表中的表达式必须在数目上和数据类型上相匹配
      • 可以用圆括号改变执行的顺序
      • ORDER BY 子句: 只能出现在语句的最后 从第一个 SELECT 语句接收列名、别名,或者位置记号

         



    ##本章重点总结

    在本课中, 您应该已经学会如何:

    1.  用联合 (UNION) 返回所有不重复的行 用全联合 (UNION ALL) 返回所有行,包括重复行
    2. 用相交 (INTERSECT) 返回被两个查询共享的所有行
    3. 用相减 (MINUS) 返回由第一个查询选择但不被第二个查询选择的所有不重复的行
    4. ORDER BY 只能用在语句的最后

 

posted @ 2018-07-18 16:30  HIT王新宇  阅读(330)  评论(0编辑  收藏  举报