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

 

 

posted @ 2017-02-08 19:09  果感  阅读(2737)  评论(0编辑  收藏  举报