Oracle子查詢(單行、多行、關聯子查詢)、集合運算


1、單行子查詢

查詢工資比名字為ADAMS高的員工的名字和工資:

 

 除了關聯子查詢以外,子查詢都是先執行子查詢再執行主查詢。

 

2、在from后面使用子查詢

 

 把子查詢的查詢的結果當作一個新的表。

3、sql優化

在子查詢和多表查詢都可以解決同一個問題的時候,盡量使用多表查詢,因為子查詢的方式需要訪問數據庫兩次,查詢效率更低。

4、多行子查詢

(1)關鍵字in:

 

(2)any(集合中的任意一個值)

 

 這里的大於any,即大於最小值。

(3)all(集合中的所有元素)

這里大於all,即大於最大值。

5、rownum

查詢全部的員工信息:

 

 加上rownum屬性后進行員工信息的查詢:

 

 可以看出rownum屬性是根據查詢結果的先后順序進行添加的。

 

 當按員工薪水進行員工信息的排序時,rownum屬性依舊不變。

 

 查詢薪水最高的三個人的信息,第二行的select語句查詢的數據是臨時表。

6、關聯子查詢

 

關聯子查詢中,外部查詢返回的每一行數據,內部查詢都要執行一次。上面的例子中,先取出emp表中的第一行數據,在內查詢中查詢該工作的平均工資,然后利用外查詢,查詢高於平均工資的員工信息。

7、UNION

(1)分別查詢10號部門和20號部門的員工信息:

 

 

 (2)使用集合運算的方式一次查詢10號和20號部門的員工信息:

 

 

 (3)盡量不要使用UNION,因為查詢效率會隨着UNION使用的次數的增多(訪問數據庫的次數也會增多)而降低。

8、交集:INTERSECT

9、差集:MINUS

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM