关于数据库的左,右,内,外连接,Union和Union all---------笔记
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