資料庫之連線
資料庫中多表之間的查詢通常使用連線的方式來實現。連線分為內連線、外連線和交叉連線。
內連線:內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行。包括相等連線和自然連線。
外連線:外連線又分為左外連線、右外連線和完整外連線。
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 ...