Sql 內外全連線的理解 例項

2021-09-01 08:37:40 字數 1690 閱讀 3202

最近公司在招人,同事問了幾個自認為資料庫可以的應聘者關於庫連線的問題,回答不盡理想~

現在在這寫寫關於它們的作用

假設有如下表:

乙個為投票主表,乙個為投票者資訊表~記錄投票人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 關於 內外連線 的個人理解

內連線 顯示內連線 模板 select from 表1 inner join 表2 on 連線條件 隱式內連線 模板 select from 表1,表2 where 連線條件 for int i 1 i 表1.size i 右外連線 模板 select from 表1 right outer joi...

SQL內外連線詳解

有兩個表a和表b。表a結構如下 aid int 標識種子,主鍵,自增id aname varchar 資料情況,即用select from a出來的記錄情況如下圖1所示 圖1 a表資料 表b結構如下 bid int 標識種子,主鍵,自增id bnameid int 資料情況,即用select fro...

sql內外連線的區別

專案當中,需要將sql server中的部分資料匯入mongo中,由於sql是關係型資料庫的原因,需要聯合多表進行查詢,因此,了解了下sql中內外連線的相關概念,以作備註 1 內聯接 典型的聯接運算,使用像 或 之類的比較運算子 包括相等聯接和自然聯接。內聯接使用比較運算子根據每個表共有的列的值匹配...