oracle中的多表查詢和子查詢以及一些注意事項


多表查詢就是使用兩張表及其以上的查詢。首先需要知道幾個名詞,笛卡爾積,內連接,外連接,子查詢。

1)笛卡爾積

  所謂笛卡爾積其實就是兩張表數據的條數相乘得到的最后結果,例如表1有10條數據,表2有4條數據,那么經過笛卡爾積之后最后的結果為40條數據,使用笛卡爾積缺點比較多,會產生很多沒有用的數據。

2)內連接

  內連接分為隱式和顯示兩種,顯示就是使用inner join關鍵字,而隱式就是使用where關鍵字,根據關聯字段建立的條件,例如where t1.id=t2.id 這就是隱式。

3)外連接

  外連接也分兩種,左外連接,右外連接。

  左外連接:使用left join 關鍵字,它返回的是左表的所有記錄,如果右表中沒有滿足條件的記錄,則返回空值。

  右外連接:使用right join 關鍵字,意思和左外連接相反。  

  在oracle中有一個特殊的符號(+),用它也可以達到左右外連接的效果,用法例如:e2.empno(+) =e3.empno,表示如果e3表在e2表中沒有滿足關系的記錄,就返回空值。

4)子查詢

  子查詢就是嵌套查詢,例如 select .. from (selec....) where(select....),寫法不一樣,但就是這樣的。

5)exists 關鍵字

  exists(查詢語句):數據量大時非常高效,當查詢語句有結果的時候返回true否則返回false
例如查詢有員工的部門信息

select *
from dept d
where exists
(select * from emp e where e.deptno=d.deptno);

6)集合運算

  集合運算:(將查詢結果合並,應用場景:應用在來自不同數據的表時)
  交集:intersect
  並集:union(去除重復的,並且排序)/union all(不去除重復的)
  差集:minus關鍵字

  集合運算的注意事項:
    1.列的類型要一致
    2.按照順序書寫
    3.列的數量要一致,如果不足用null空值補全。

 


免責聲明!

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



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