最近公司在招人,同事問了幾個自認爲數據庫可以的應聘者關於庫連接的問題,回答不盡理想~
現在在這寫寫關於它們的作用
假設有如下表:
一個爲投票主表,一個爲投票者信息表~記錄投票人IP及對應投票類型,左右連接實際說是我們聯合查詢的結果以哪個表爲準~
1:如右接連 right join 或 right outer join:
我們以右邊voter表爲準,則左表(voteMaster)中的記錄只有當其ID在右邊(voter)中存在時纔會顯示出來,如上圖,左邊中ID爲3.4.5.6因爲這些ID右表中沒有相應記錄,所以沒有顯示!
2:因此我們自然能理解左連接 left join 或者 left outer join
可見,現在右邊中ID在中存在時纔會顯示,當右邊中沒有相應數據時則用NULL代替!
3:全連接 full join 或者 full outer join,爲二個表中的數據都出來,這裏演示效果與上一樣!
4:內連接 inner join 或者 join;它爲返回字段ID同時存在於表voteMaster 和 voter中的記錄
5:交叉連接(完全連接)cross join 不帶 where 條件的
沒有 WHERE 子句的交叉聯接將產生聯接所涉及的表的笛卡爾積。第一個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。(table1和table2交叉連接產生6*3=18條記錄)
等價select vm.id,vm.voteTitle,vt.ip from voteMaster as vm,voter as vt
6:自連接。在這裏我用我前段時間一個電力項目中的例子(改造過)
如下表:
這是一個部門表,裏面存放了部門及其上級部門,但都放在同一張表中,我們假設現在需要用SQL查詢出各部門及其上級部門!就如何做,
當然,不用自連接也一樣,可以如下:
我們達到預期目的!在這個查詢中使用了一個子查詢完成對上級部門名的查詢,如果使用自連接,那麼結構上感覺會清晰很多。
是不是也同樣完成了功能呢,這裏除了使用自連接外,還使用了左連接,因爲省電力沒有上級部門,他是老大,如果使用內連接,就會把這條記錄過濾掉,因爲沒有和他匹配的上級部門。
自連接用的比較多的就是對權形結構的查詢!類似上表!
SQL進階二: join詳解
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
oracle 表之間的連接;內連接 ,左連接 右連接
zhangshanyu
2019-02-22 20:39:27
內外左右連接定義
dongisland
2018-09-13 02:55:34
左連接、右連接、內連接的區別
zoufuxing
2018-09-12 05:27:41
SQL進階二: join詳解
wii33144
2018-09-12 03:21:15
MySQL數據庫基礎知識學習筆記(二)
綠茶點心
2018-09-11 09:27:04
內連接、左外連接、右外連接、交叉連接區別
jj0741209
2018-08-22 11:58:06
表的內連接、外連接(左連接與右連接)
shu_lin
2018-08-20 23:35:41
Oracle 左連接(+)加號用法及常用語法之間的關係
博客园-
2018-10-25 22:00:51
LeetCode - 175. 組合兩個表
天一涯51CTO
2018-09-13 03:01:37
criteria創建criteria 左連接 再 添加 add example,報錯 ClassCastException:
beetsuan
2018-09-11 08:33:00
左連接查詢(LEFT JOIN)注意事項
Lee_吉
2018-09-10 04:18:33
case函數基礎應用的實例(最基礎的一條實例)
Beautifulcoco
2020-07-08 07:39:24
sql語句最經常用的函數(最簡單的)
Beautifulcoco
2020-07-08 07:39:24
Oracle中row_number()、rank()、dense_rank()
Timegoeson
2020-07-07 19:20:47