SQL的四種連接-左外連接、右外連接、內(nèi)連接、全連接

1、內(nèi)聯(lián)接(典型的聯(lián)接運算,使用像 =? 或 <> 之類的比較運算符)。

包括相等聯(lián)接和自然聯(lián)接。

內(nèi)聯(lián)接使用比較運算符根據(jù)每個表共有的列的值匹配兩個表中的行。例如,檢索 students和courses表中學(xué)生標(biāo)識號相同的所有行。

2、外聯(lián)接。

外聯(lián)接可以是左向外聯(lián)接、右向外聯(lián)接完整外部聯(lián)接

在 FROM子句中指定外聯(lián)接時,可以由下列幾組關(guān)鍵字中的一組指定:

1)LEFT? JOIN或LEFT OUTER JOIN

返回左表的行,左向外聯(lián)接的結(jié)果集包括? LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯(lián)接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關(guān)聯(lián)的結(jié)果集行中右表的所有選擇列表列均為空值。

2)RIGHT? JOIN 或 RIGHT? OUTER? JOIN

右向外聯(lián)接是左向外聯(lián)接的反向聯(lián)接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。

3)FULL? JOIN 或 FULL OUTER JOIN

完整外部聯(lián)接返回左表和右表中的所有行。當(dāng)某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結(jié)果集行包含基表的數(shù)據(jù)值。

3、交叉聯(lián)接

交叉聯(lián)接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯(lián)接也稱作笛卡爾積。

FROM 子句中的表或視圖可通過內(nèi)聯(lián)接或完整外部聯(lián)接按任意順序指定;但是,用左或右向外聯(lián)接指定表或視圖時,表或視圖的順序很重要。有關(guān)使用左或右向外聯(lián)接排列表的更多信息,請參見使用外聯(lián)接。

例子:

-------------------------------------------------

a表???? id?? name???? b表???? id?? job?? parent_id

1?? 張3?????????????????? 1???? 23???? 1

2?? 李四???????????????? 2???? 34???? 2

3?? 王武???????????????? 3???? 34???? 4

a.id與parent_id?? 存在關(guān)系

-------------------------------------------------

1) 內(nèi)連接

select?? a.*,b.*?? from?? a?? inner?? join?? b???? on?? a.id=b.parent_id

結(jié)果是

1?? 張3?????????????????? 1???? 23???? 1

2?? 李四????????????????? 2???? 34???? 2

2)左連接

select?? a.*,b.*?? from?? a?? left?? join?? b???? on?? a.id=b.parent_id

結(jié)果是

1?? 張3?????????????????? 1???? 23???? 1

2?? 李四????????????????? 2???? 34???? 2

3?? 王武????????????????? null

3) 右連接

select?? a.*,b.*?? from?? a?? right?? join?? b???? on?? a.id=b.parent_id

結(jié)果是

1?? 張3?????????????????? 1???? 23???? 1

2?? 李四????????????????? 2???? 34???? 2

null?????????????????????? 3???? 34???? 4

4) 完全連接

select?? a.*,b.*?? from?? a?? full?? join?? b???? on?? a.id=b.parent_id

結(jié)果是

1?? 張3????????????????? 1???? 23???? 1

2?? 李四???????????????? 2???? 34???? 2

null??????????????   ? 3???? 34???? 4

3?? 王武???????????????? null

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容