——SQL是關於集合的
oracle是關系型數據,其中的數據表都是有一定規律的數據的一個個集合,所以在使用SQL時,如果能按照集合的思路來進行時會節省很多效率,也鞥讓語句更加的清晰明了。
1、四個集合運算符
1)union 返回不重復的數據行;
2)union all 返回所有的數據行(包括重復的);
3)minus 返回第一個輸入查詢存在,其他查詢不存在的數據行;
4)intersect 返回所有數據查詢中都存在的數據行。
注:除union all 以外的集合運算都需要對結果進行排序/取唯一值操作,這就意味著需要更多地效率,所以在不關心重復的情況下盡量使用union all
2、關於空值(null)
關系模型只有真、假兩個結果;而SQL語言允許有三個結果:真、假、未知。
而對於未知這種結果,oracle會認為是正確的,於是在很多的搜索條件中都必須要注意這一點,否則搜索出來的結果和預期會有很大的出入
order by 語句默認把null值放在最後輸出,如果要把它放在前邊,需要在order by 語句後面加上 nulls first
null在聚合函數中,會被自動的去除掉,也就是不參與聚合函數的運算