內連線和外聯結連線的區別

2021-08-05 22:28:01 字數 1450 閱讀 8752

資料庫之連線

資料庫中多表之間的查詢通常使用連線的方式來實現。連線分為內連線、外連線和交叉連線。

內連線:內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行。包括相等連線和自然連線。

外連線:外連線又分為左外連線、右外連線和完整外連線。

1.左外連線(

left join

或left outer join

):左外連線的結果集包括

left join

子句中指定的左表的所有行,而不僅僅是連線列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。

2.右外連線(

right join

或right outer join

):右外連線是左外連線的反向連線。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。

3.完整外連線(

full join

或full outer join

):完整外部聯接返回左表和右表中的所有行。當某行在另乙個表中沒有匹配行時,則另乙個表的選擇列表列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。

交叉連線:

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

a表 b

表 id

name id

ageparent_id 1

張三 1

23 1

2 李四

2 24

2 3王五 3

25 4

內連線select a.*, b.* from a inner join b on a.id=b.parent_id 1

張三 1

23 1

2 李四

2 24

2 左連線

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

張三 1

23 1

2 李四

2 24

2 3王五

null

null

null

右連線select a.*, b.* from a right join b on a.id=b.parent_id 1

張三 1

23 1

2 李四

2 24

2null

null 3

25 4

完全連線

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

張三 1

23 1

2 李四

2 24

2null

null 3

25 4

3 王五

null

null

null

內連線和外連線的區別

在之前,我對mssql中的內連線和外連線所得出的資料集不是很清楚。這幾天重新溫習了一下sql的書本,現在的思路應該是很清楚了,現在把自己的理解 發出來給大家溫習下。希望和我一樣對sql的連線語句不太理解的朋友能夠有所幫助。發這麼菜的教程,各位大大們別笑話偶了,呵 d 有兩個表a和表b。表a結構如下 ...

內連線和外連線的區別

假設乙個資料庫中有兩張表,一張是學生表studentinfo,一張是班級表classinfo,兩張表之間用classid欄位進行關聯。如果用內連線 inner join on 正常的寫法是這樣的 select studentinfo.classinfo.from studentinfo inner ...

內聯,左外聯,右外聯,全連線,交叉連線 的區別

eg select from t institution i inner join t teller t on i.inst no t.inst no where i.inst no 5801 其中inner可以省略。等價於早期的連線語法 select from t institution i,t ...