說明:如下示例中,表a是員工表,有a,b,c,d四個員工,性別都是男性m。表b是工資表,有a,b,d四個員工,工資對應的是1000,2000,4000。而後分別演示帶(+)符號的和不帶(+)符號的,結果以下。html
SQL> select * from a; NAME SEX -------------------- ----- a m b m c m d m SQL> select * from b; NAME MONEY -------------------- ---------- a 1000 b 2000 d 4000 SQL> select a.name,b.money from a,b where a.name=b.name(+); NAME MONEY -------------------- ---------- a 1000 b 2000 d 4000 c SQL> select a.name,b.money from a,b where a.name=b.name; NAME MONEY -------------------- ---------- a 1000 b 2000 d 4000
可見,帶(+)號時,a表中的全部人都在,即便工資爲空。不帶(+)時,a表中的沒有出現工資爲空的員工c。程序員
(+) 表示外鏈接。條件關聯時,通常只列出表中知足鏈接條件的數據。若是條件的一邊出現(+),則另外一邊的表就是主表,主表中的全部記錄都會出現,即便附表中有的記錄爲空sql
內鏈接,外鏈接,交叉鏈接,其中外鏈接包括左鏈接和右鏈接。數據庫
內鏈接windows
SQL> select a.name,b.money from a,b where a.name=b.name; SQL> select a.name,b.money from a inner join b on a.name=b.name;
左鏈接ide
SQL> select a.name,b.money from a,b where a.name=b.name(+); SQL> select a.name,b.money from a left join b on a.name=b.name;
右鏈接學習
SQL> select a.name,b.money from a right join b on a.name=b.name; SQL> select a.name,b.money from a,b where a.name(+)=b.name;
交叉鏈接ui
SQL> select a.name,b.money from a full join b on a.name=b.name; NAME MONEY -------------------- ---------- a 1000 b 2000 c d 4000 SQL> select a.name,b.money from a,b where a.name(+)=b.name(+); select a.name,b.money from a,b where a.name(+)=b.name(+) * 第 1 行出現錯誤: ORA-01468: 一個謂詞只能引用一個外部聯接的表
因此(+)只是表示外鏈接,並不表示交叉鏈接。url
參考:code
SQL錶鏈接查詢(inner join、full join、left join、right join)
記得幫我點贊哦!
精心整理了計算機各個方向的從入門、進階、實戰的視頻課程和電子書,按照目錄合理分類,總能找到你須要的學習資料,還在等什麼?快去關注下載吧!!!
念念不忘,必有迴響,小夥伴們幫我點個贊吧,很是感謝。
我是職場亮哥,YY高級軟件工程師、四年工做經驗,拒絕鹹魚爭當龍頭的斜槓程序員。
聽我說,進步多,程序人生一把梭
若是有幸能幫到你,請幫我點個【贊】,給個關注,若是能順帶評論給個鼓勵,將不勝感激。
職場亮哥文章列表:更多文章
本人全部文章、回答都與版權保護平臺有合做,著做權歸職場亮哥全部,未經受權,轉載必究!