首页 > 编程知识 正文

集合运算符号,集合运算法则

时间:2023-05-04 07:27:37 阅读:230217 作者:124

一、表的加减法 1、集合运算 集合运算就是对满足同一规则的记录进行的加减等四则运算。 集合运算可以去除重复行。如果希望集合运算保留重复行,就需要使用all选项。 使用union(并集)、intersect(交集)、except(差集)、minus(差集)等集合运算符来进行集合运算。              
         集合运算符会去除重复的记录,union all会保留重复行。

2、表的加法—union

         Union:对两个结果集进行并集操作,重复行只取一次,同时进行默认规则的排序。

         Unionall:对两个结果集进行并集操作,包括所有重复行,不进行排序。

        例:创建如下表dept1,进行集合运算。

                          查看dept表                   使用union运算dept和dept1表:            

3、union all

         会包含重复行。

                 注:可以看出只有union all的结果集是不排序的。

4、交集intersect

         即选取两个记录集合中的公共部分。

        

        若希望保留重复行也可以使用intersect all。

5、差集minus

        

        Oracle中差集使用的是minus,db2等数据库使用except来进行差集运算。

         注意被减数与减数位置不同得到的结果也不同。

        

6、集合运算的注意事项

         1>作为运算对象的记录的列数必须相同。

         2>作为运算对象的记录中列的类型必须一致。列名不必相同,但要类型匹配且顺序要对应,大类型对上就行了,比如char对varchar2,date对timestamp都可以,字段数要等同,不等需要补全。

                          因表的列数不同,直接select*进行集合运算会出错。                  但使用相应类型匹配的列进行集合运算是可以的。                  3>可以使用任何select语句,即where、group by、having等子句都可以使用。但 order by 子句只能在最后使用一次。         

        4> 四种集合运算符优先级按先后出现的顺序执行,如有特殊要求可以使用括号。

        5> 集合中order by的用法

            A、 缺省情况下,复合查询后的结果集是按所有字段的组合进行排序的(除union all 外),如果不希望缺省的排序,也可以使用order by显示排序。

            B、显式order by是参照第一个select语句的列元素。所以,order by后的列名只能是第一个select使用的列名、别名、列号。如果是补全的null值需要order by,则需要使用别名。

            
            
            

        






版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。