1.左連接
select a.filed1,a.filed2,b.filed1 from a (左表) left join b(右表) on a.commonfiled = b.commonfiled
查詢思路:按照匹配字段(外鍵),b表記錄與a表記錄進行逐一匹配,若有n條匹配,則形成n行。若無匹配,則左表中得記錄是全的,即使右表沒有匹配的字段存在
2.右連接
select a.filed1,a.filed2,b.filed1 from a (左表) right join b(右表) on a.commonfiled = b.commonfiled
查詢思路:按照匹配字段(外鍵),a表記錄與b表記錄進行逐一匹配,若有n條匹配,則形成n行。若無匹配,則右表中得記錄是全的,即使左表沒有匹配的字段存在 ()
3.內連接
select a.filed1,a.filed2,b.filed1 from a (左表) inner join b(右表) on a.commonfiled = b.commonfiled
查詢思路:按照匹配字段(外鍵)進行逐一匹配,至少有一條匹配,才形成一行,若有n條匹配,則形成n行。(即:外鍵匹配形成行)
4.全連接
select a.filed1,a.filed2,b.filed1 from a (左表) full join b(右表) on a.commonfiled = b.commonfiled
查詢思路:按照匹配字段(外鍵)進行逐一匹配,有匹配的則匹配成一行,無匹配的則單獨成一行。
5.交叉連接
全部匹配。即:生成笛卡爾積連接
6.Union 和 Union all
Union和union all表示把查詢的結果集並集起來,而不是交集
限制: union和union all進行並集的字段必須是同一數據類型
- union 是去掉重復值 union all不去掉重復值
union用法
select a.filed1 from a union b.filed1 from b
union all 用法
select a.filed1 from a union all b.filed1 from b