日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQL中的各種連接的區(qū)別總結(jié)

前言

今天主要的內(nèi)容是要講解SQL中關(guān)于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where區(qū)別和用法,不用我說其實前面的這些基本SQL語法各位攻城獅基本上都用過。但是往往我們可能用的比較多的也就是左右連接和內(nèi)連接了,而且對于許多初學(xué)者而言不知道什么時候該用哪種語法進行查詢,并且對于左右,或者內(nèi)連接查詢的時候關(guān)于ON 和Where 的作用也是模糊不清的,說不出其中的一個大概的差別,因此接下來請容我把它們好好描述一遍。

數(shù)據(jù)庫(MS Sql Server)表結(jié)構(gòu)和對應(yīng)數(shù)據(jù)

Students 學(xué)生表:

圖片

Class 班級表:

圖片

Join(where聯(lián)立查詢)

概念:用于兩表或多表之間數(shù)據(jù)聯(lián)立查詢。

select * from Students s,Class c where s.ClassId=c.ClassId

圖片

Inner Join(內(nèi)連接查詢)

概念:與Join相同,兩表或多表之間聯(lián)立查詢數(shù)據(jù),因此我們在使用多表join查詢的時候既可以使用where關(guān)聯(lián),也可以是inner join關(guān)聯(lián)查詢。

select * from Students s inner join  Class c  on s.ClassId=c.ClassId

圖片

Left Join(左連接查詢)

概念:以左表中的數(shù)據(jù)為主,即使與右表中的數(shù)據(jù)不匹配也會把左表中的所有數(shù)據(jù)返回。

select * from Students s left join  Class c  on s.ClassId=c.ClassId

圖片

Right Join(右連接查詢)

概念:與Left Join的用法相反,是以右表中的數(shù)據(jù)為主,即使左表中不存在匹配數(shù)據(jù)也會把右表中所有數(shù)據(jù)返回。

select * from Students s right join  Class c  on s.ClassId=c.ClassId

圖片

Full Join(全連接查詢)

概念:返回表中所有的數(shù)據(jù)數(shù)據(jù),無論匹配與否。

select * from Students s Full JOIN  Class c  on s.ClassId=c.ClassId

圖片

On、Where的異同

這兩個概念中也是絕大多數(shù)人無法區(qū)分到底它們兩者之間有何區(qū)別,我什么時候使用On,什么時候使用Where,下面將分別展示兩者的異同。

ON的使用無論是左右內(nèi)全都使用到了On來進行關(guān)聯(lián):

對于Inner Join 的作用就是起到了與where相同的作用條件篩選:

select * from Students s inner JOIN  Class c  on s.ClassId=c.ClassId and s.Sex='男'

圖片

對于左右連接而言,無論查詢條件是否滿足都會返回對應(yīng)所指向的那邊的所有數(shù)據(jù):

select * from Students s left join  Class c  on s.ClassId=c.ClassId and s.Sex='男'

圖片

對于Full Join 而言無論,只有同時滿足的時候才會返回全部關(guān)聯(lián)的數(shù)據(jù),假如有一方不滿足返回以左邊的表數(shù)據(jù)為基準(zhǔn)返回:

--全連接
select * from Students s full join  Class c  on s.ClassId=c.ClassId
 
--全連接加on查詢
select * from Students s full join  Class c  on s.ClassId=c.ClassId and s.Sex='男'

圖片

圖片

Where的用法就不描述了因為這個咱們用的都比較多,下面說明一下兩者的概念問題:

1、on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄(以左連接為例)。

2、where條件是在臨時表生成好后,再對臨時表產(chǎn)生的數(shù)據(jù)進行過濾條件篩選。

結(jié)論:on用作于生成臨時表時的條件篩選,where用作于對臨時表中的記錄進行過濾。

總結(jié):

最后我想說的是,有時候我們總認(rèn)為概念性的東西很簡單而忽視了實踐。其實往往一些基礎(chǔ)性的東西才是為我們往后構(gòu)建萬丈高樓的前提,堅持多實踐、多動手,你會發(fā)現(xiàn)其實這些問題并不難。


網(wǎng)頁題目:SQL中的各種連接的區(qū)別總結(jié)
文章URL:http://www.dlmjj.cn/article/cdodjsd.html