先說背景:曾經一直認為左連線和左外連線是不一樣的,在學校學習的時候這概念都很模糊,畢業的時候又基本都交給老師了,現在才知道原來左連線是左外連線的簡寫。。。。。下面詳細的介紹一下自己的理解吧。如果有錯,請大家指正。
首先sql的多表連線分為兩大部分:外連線和內連線,外連線又分為左連線,右連線,全外連線 。
左右連線的區別:
a
left
join
b 的結果集與a表的記錄數同
a
right
join
b 的結果集與b表的記錄數同
a
left
join
b 等價 b
right
join
a
內連線:
a
inner
join
b on
a.id
=b.id 結果集是ab兩表的交集
select
*from
a
inner
join
b
ona.id
=b.id 等價於
select
*from
a,b
where
a.id
=b.id
注意:(以下摘自
在你要使用多個left join的時候 比如說10個
我們把10個全都寫成left join的形式
然後再sql讓他自動執行一下,它會把最後一次出現的left join變成left
outer
join
所以依此推理,最後乙個left join會以left
outer
join的形式存在
當然,不管變不變對結果的顯示沒有任何影響
cross
join
笛卡爾乘積(所有可能的行對)注意不能使用on,
在交叉連線中沒有on條件子句
inner
join
僅對滿足連線條件的cross中的列
left
outer
join
乙個表滿足條件的行,和另乙個表的所有行
right
outer
join
與left相同,但兩個表的角色互換
full
outer
join
left
outer
和 right
outer中所有行的超集
內連線和外連線
在oracle的sql語句常用的連線有內連線 inner join 外連線 outer join 等,內連線又包括等值連線,非等值連線,自連線 而外連線又分為左連線和右連線。其中預設的是內連線的等值連線。內連線 利用內連線 等值 就可獲取公共部分c,圖中的資料集c.select from a inn...
內連線和外連線
在之前,我對mysql中的內連線和外連線所得出的資料集不是很清楚。這幾天重新溫習了一下 sql的書本,現在的思路應該是很清楚了,現在把自己的理解發出來給大家溫習下。希望和我一樣對 sql的連線語句不太理解的朋友能夠有所幫助。發這麼菜的教程,各位大大們別笑話偶了,呵 d 有兩個表a和表b 表a結構如下...
內連線外連線
內連線 內連線也叫連線,是最早的一種連線,最早被稱為普通連線或自然連線。內連線是從結果中刪除其他被連線表中沒有匹配行的所有行,所以內連線可能會丟失資訊。內連線的語法 select fieldlist from table1 inner join table2 on table1.column tab...