左連接和左外連接的區別-005


左連接和左外連接的區別?

今天面試時面試官問“左連接和左外連接的區別”,把我給問懵了。

因為對於oracle只懂得簡單的操作,我回答說左連接是以左邊的表的數據為主,匹配右邊表的數據。

面試官又問一次,並提示說“left join 和left out join”。

回來后查了一下,網上說“左連接和左外連接”沒有區別。

有沒有高手指教一下:

1,左連接和左外連接到底有沒有區別?

2,面試官問我的目的是什么?為了測試我什么?

注:本人技術能力確實一般,在學習中。。。

內連接:
INNER JOIN:只顯示多表之間與關聯條件相匹配的列.

左連接:
以左表為基礎,顯示左表中的所有列,不管是否與關聯條件相匹配,而右表中的數據只顯示與關聯條件相匹配的列,不匹配的列以NULL字符填充.
select * from t_A a left join t_B b on a.id = b.id; 或 select * from t_A a left outer join t_B b on a.id = b.id;

LEFT JOIN是以左表的記錄為基礎的,示例中t_A可以看成左表,t_B可以看成右表,它的結果集是t_A表中的全部數據,
再加上t_A表和t_B表匹配后的數據。換句話說,左表(t_A)的記錄將會全部表示出來,而右表(t_B)只會顯示符合搜索
條件的記錄。t_B表記錄不足的地方均為NULL。

用(+)來實現:
Select * from t_A a,t_B b where a.id=b.id(+);

這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。如果加號寫在右表,
左表就是全部顯示,所以是左連接。


全外連接(FULL OUTER JOIN/FULL JOIN):
左表就是全部顯示,所以是左連接。
左表和右表都不做限制,所有的記錄都顯示,兩表不足的地方均為NULL。 全外連接不支持(+)寫法。
select * from t_A a full join t_B b on a.id = b.id; 或 select * from t_A a full outer join t_B b on a.id = b.id;
 
        

 


免責聲明!

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



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