外連線有:左連線、右連線、全連線(可以省略 outer關鍵字),即 外連線:不是乙個具體的連線
內連線 就是內連線:可以省略 inner關鍵字
左表的所有行會顯示,右表的 只有和左表匹配到的行才會顯示。即: a表的全集+ ab表的交集
右表的所有行會顯示,左表的 只有和右表匹配到的行才會顯示。 即:b表的全集+ab表的交集
兩種表的公共部分進行顯示,即: ab表的交集。注: inner 關鍵字可以省略
select * from a inner join b on a.key=b.key
或select * from a join b on a.key=b.key
當b表的外來鍵key refer a表的key時,且join表示,用此key關聯的時候,那麼 inner join 和right join 的結果是一樣的!因為b表有的,a表也都有。
注:mysql本身不支援你所說的full join(全連線),但可以通過union來實現 ,
a+b-(ab交集)
select * from a full outer join b on a.key=b.key
where ( a.key is null or b.key is null )
a的獨有:
select * from a left join b on a.key=b.key where b.key is null
注:切記不可寫成 select * from a left join b on a.key=b.key where b.key = null
因為 null 是一種特有的資料型別,其等價於沒有任何值、是未知數。null與0、空字串、空格都不同
b的獨有:
假如a表有10條資料,b表有5條資料
例如:student表有2條資料,class表有2條資料,當 student left join class ,結果出現了3條資料
執行:select * from student s left join class c on s.student_id=c.student_id
結果:
全連線:
就是笛卡爾乘積,兩個表的每行匹配
內連線 左連線 右連線
弄個例題,直觀一點。兩個表 表stu id name 1,jack 2,tom 3,kity 4,nono 表exam id grade 1,56 2,76 11,89 內連線 顯示兩表id匹配的 select stu.id,exam.id,stu.name,exam.grade from stu ...
內連線 左連線 右連線
1.內連線 利用內連線可獲取兩表的公共部分的記錄,即圖3的記錄集c 語句如下 select from a join b on a.aid b.bnameid 執行結果如下圖4所示 其實select from a,b where a.aid b.bnameid與select from a join b...
左連線 右連線 內連線
左連線又稱左外連線,它的主要意思就是說對於兩個表r和s,關於某一屬性將兩個表進行連線,方便展示。關聯的約束就是在on後面,例如下面的例子就是r b s b 示例 r表如下 s表如下 關於示例中的的r和s我們可以針對屬性b s b r b 做乙個連線,而左連線的話就是說即使另乙個表中沒有與之相對應的b...