SQLSERVER通俗易懂的連線查詢 聯合查詢

2021-08-17 09:08:52 字數 3396 閱讀 4848

最近有好多小夥伴對連線查詢有很多的疑問,當然包括初學者和工作幾年的老鳥

首先建立兩個表,學生班級表乙個班級對應多個學生

--新建學生表

select * into student

from

(select 1 as id ,'張三' as name , 18 as age,1 as classid

union select 2 as id ,'李四' as name , 19 as age,1 as classid

union select 3 as id ,'王麻子' as name , 18 as age,2 as classid

union select 4 as id ,'熊二' as name , 19 as age,4 as classid) as studen

--新建班級表

select * into class

from

(select 1 as cid ,'軟體工程一班' as classname

union select 2 as cid ,'軟體工程二班' as classname

union select 3 as cid ,'軟體工程三班' as classname ) as class

這裡呢熊二是找不到班級的,軟體工程三班現在是沒有學生的,這樣做的目的就是為了區分每個查詢的區別

下面來分析各種連線查詢:

內連線:

--內連線

結論:我們可以看出student表的「熊二」沒有班級,class表的「軟體工程三班」在對應表裡面都沒有找到相對應資料,說以呢內連線的查詢是對於兩張表有對應資料的查詢,沒有對應得就不關我的事。

注:那麼這裡為毛把inner jion 和join拿出來做比較呢,有個小夥子面試被問道了有啥區別。。所以呢 就是這樣的區別,inner關鍵字可以去掉,join就是inner join的乙個簡寫而已。。。沒什麼的

左連線:

--左連線

結論:左連線在例子裡可以看出,以兩個查詢表左邊的表為主表,右邊的表為輔表,簡單的說就是要儲存左邊的資料完整,右邊有沒有對應我不管,右邊沒有對應的所有列為null

右連線:

--右連線

結論:跟左連線相反,這裡右連線是以右表為主,左表為輔,保證右表的資料完整性。有小夥伴看出來了,這裡用了左連線和右連線查詢,結果是相同的,只是資料位置不同而已,這裡不影響結果。。so,左連線和右連線可以相互轉換查詢

全連線:

--全連線

結論:這裡可以看出,不管是student表裡面沒有對應班級的「熊二」,還是class表裡面沒有學生的「軟體工程三班」,都查詢出來了,而沒有對應得令一張表資料為null,這樣保證了兩個表的資料完整性。

交叉連線:

--交叉連線

結論:這裡查詢出來的表資料是相乘,也就是傳說中的笛卡爾積。。不管資料是否對應,左邊的表所有資料迴圈的與右邊的表中的資料去連線查詢

連線查詢呢就這麼多,下面講講聯合查詢。

聯合查詢:

--聯合查詢 union

select 1 as cid ,'軟體工程一班' as classname

union select 1 as cid ,'軟體工程一班' as classname

--聯合查詢 union all

select 1 as cid ,'軟體工程一班' as classname

union all select 1 as cid ,'軟體工程一班' as classname

結論:這裡用union 和 union all做了乙個比較。聯合查詢帶all的,那就是不管有沒有資料重複,結果都顯示。

1.聯合查詢這裡要注意幾個地方就是查詢聯合的資料列轉換後一定是同型別的,比如int和decimal(18, 2),那麼轉換後都是decimal(18, 2)型別的;

2.列名取第乙個查詢資料的名字

最後:查詢這玩意兒有時候就那麼回事,所以呢,你需要什麼樣的資料,保證那張表的資料完整,那麼你就怎麼玩,方法多的是還需要各位多加練習少放香蔥

通俗易懂SQL server 中的鎖

之前講了資料庫中的事務,為了讓事務順利執行,就有了鎖?1 什麼是鎖?顧名思義,就是防止保護被偷東西,那麼在資料庫中就是防止資料被偷也就是 資料不完整。2 為什麼要用鎖?因為有些時候會出錯,要保證資料正常不出現問題就需要鎖。既然是防止資料被偷,那麼什麼情況下資料 會變得不完整呢?一下就是錯誤例項 在多...

通俗易懂SQL server 中的索引

一 什麼是索引?資料庫索引其實就是類似目錄的乙個東西,搜尋的時候能夠引導你更好更快的查出來。主要目的是提高了sql server系統的效能,加快資料的查詢速度與減少系統的響應時間 二 為什麼要用索引?好的索引會讓資料查詢效率提高百倍,所以必要的情況下需要使用索引來提高速度。三 怎麼使用索引?1 索引...

numpy bincount 通俗易懂

bincount的用途很簡單,就是統計出乙個列表的各個元素的出現次數。例如輸入是 1,0,2,2,1,2,3,5 那麼輸出就是 1,2,3,1,0,1 這樣的結果可能並不是很直觀,可能依然會有同學會問為什麼會輸出這樣的結果。我們看看 假如我們把輸入的列表中的數字都統計一遍,形成乙個字典 key是列表...