程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 數據庫中的集合查詢

數據庫中的集合查詢

編輯:DB2教程

數據庫中的集合查詢


數據庫中的集合操作主要包括3個方面:

1. Union合並行

union的作用是為了合並兩個查詢結果,而且在合並的同時把相同的行去重。

例如:

\

如果我們需要顯示全部的並集,即不去重,可以使用union all,如下:


我們只需要使用union來連接兩個select-from-where語句塊即可。

union有如下幾個注意點:

1)union是可交換的操作,A union B的結果和B union A的結果相同;

2)理論上,select語句塊在union中出現的順序對於運行速度沒有影響,但是在實際應用中可能有影響。我們盡量把小表的查詢放在union的前面,因為優化器合並中間結果和除去重復行的方式不同。當然,不同的DBMS的影響可能不同;

3)intersect的優先級比union、except要高。其中,intersect是查找相同行,except是查找不同行。這也是和不同DBMS有關的;

4)在可以使用組合的select-from-where語句塊的情況下,盡量不要使用union;

5)當union和union all混合使用的時候,要使用括號來明確合並的順序,因為這涉及到到底哪些查詢結果需要合並;

6)即使沒有使用order by語句,union的結果也可能是排序的,而union all由於不去重,所以不需要排序。排序需要很多的額外時間,所以我們能使用union all就盡量不使用union;

2. intersect查找相同行

intersect操作是取兩個查詢結果的相同行。

mySQL不支持intersect,我們可以使用exists謂詞來實現相同的功能。

3. except查找不同行


A except B就是查找屬於A但是不屬於B的查找結果。

mySQL不支持except,我們可以使用not exists、not in等謂詞來實現相同的功能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved