多表查询之内连接VS外连接

简介:
在实际项目中对数据库进行查询是再常见不过的东西了,但是根据不同的条件查询所用的语句也是 千差万别的,最常见的便是数据库中多表之间的联合查询。说到联合查询就不得不提一下查询语句中的表连接关系。我们所用的多表查询语句中表间关系无非有两 种,一种为内连接(inner join),另一种为外连接(outer join)。具体细分一下外连接又可分为:左外连接(left join)、右外连接(right join)、全连接(full join),另外还常见的形式有left outer join,right outer join,full outer join。他们之间的具体关系可以下图简单表示:

 

一、对比理解inner join和 full join

 

对这两个连接关系的理解我们可以借助于数学上的交并集。Inner join也就是内连接,要求的是多表之间必须同时都满足两表之间的对接条件才能查出结果,也就是说按照对接关系(即on条件)查出的结果必须是多表之间的 交集,不满足on条件将会被过滤掉,可以理解为数学上的add条件。Out join与inner join却恰恰相反,它所查出来的结果是两表各自按条件查询结果的并集,outer join的存在,相当于数学上的or条件。

 

二、对比理解left join和right join

 

Left join和right join最大的区别在于它确定了以哪个表为查询结果基准。Left join确定以左边表为基准,也就是join字符前的那张表,而right join确定以右边表为基准,即join字符后的那张表。进行查询时首先按照基准表的查询结果确定记录条数然后再根据条件查询非基准表。具体用法以下例说 明:

 

表一:TableOne(别名为TO)

 

ID

A

B

C

1

A1

B1

C1

2

A2

B2

C2

3

A3

B3

C3 

 

表二:TableTwo(别名为TT)

 

ID

D

E

1

D1

E1

2

D2

E2

4

D4

E4

 

请注意两表中的ID号的区别。

 

 

 

Inner join:

 

Select TO.A , TO.B , TT.D , TT.E fromTableOne TO inner join TableTwo TT on TO.ID=TT.ID

 

其查询结果为:

 

A

B

D

E

A1

B1

D1

E1

A2

B2

D2

E2

 

 

 

Left  join:

 

Select TO.A , TO.B , TT.D ,TT.E fromTableOne TO left join TableTwo TT on TO.ID=TT.ID

 

其查询结果为:

 

A

B

D

E

A1

B1

D1

E1

A2

B2

D2

E2

A3

B3

NULL

NULL

 

 

 

Right join:

 

Select TO.A , TO.B , TT.D ,TT.E fromTableOne TO right join TableTwo TT on TO.ID=TT.ID

 

其查询结果为:

 

A

B

D

E

A1

B1

D1

E1

A2

B2

D2

E2

NULL

NULL

D4

E4

 


 

Full join:

 

Select TO.A , TO.B , TT.D ,TT.E fromTableOne TO full join TableTwo TT on TO.ID=TT.ID

 

其查询结果为:

 

A

B

D

E

A1

B1

D1

E1

A2

B2

D2

E2

A3

B3

NULL

NULL

NULL

NULL

D4

E4




本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/archive/2012/08/08/2628359.html,如需转载请自行联系原作者
相关文章
|
8月前
|
关系型数据库 MySQL 数据库
什么是内连接、外连接、交叉连接、笛卡尔积呢?
什么是内连接、外连接、交叉连接、笛卡尔积呢?
内连接、左外连接、右外连接、全外连接区别
内连接、左外连接、右外连接、全外连接区别
内连接、左外连接、右外连接、全外连接区别
|
关系型数据库 MySQL
一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接
一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接
214 0
一文完整MySQL连接查询,笛卡尔乘积,内连接外连接交叉连接
|
SQL 关系型数据库 MySQL
MySQL基础-多表查询之外连接
外连接分为两种,分别是:左外连接 和 右外连接。具体的语法结构为:
126 0
用图表示 内连接 左外连接右外连接的区别
用图表示 内连接 左外连接右外连接的区别
128 0
用图表示 内连接 左外连接右外连接的区别
|
关系型数据库 MySQL 开发者
连接查询之外连接 | 学习笔记
快速学习连接查询之外连接。
122 0
连接查询之外连接 | 学习笔记
|
SQL 数据库
使用 DML语句,对 “锦图网” 数据进行操作,连接查询(内连接,左外连接,右外连接,全连接)
使用 DML语句,对 “锦图网” 数据进行操作,连接查询(内连接,左外连接,右外连接,全连接)
116 0
笛卡尔积与连接查询
连接查询 (左连接 右连接 内连接)
196 0
|
SQL 关系型数据库 MySQL
SQL 内连接,外连接(左外连接、右外连接)
参考https://blog.csdn.net/plg17/article/details/78758593整理笔记 一、内连接 关键字:inner join on 语句:select * from a_table a inner join b_table bon a.a_id = b.b_id; 执行结果: 说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
1439 0

热门文章

最新文章

下一篇
开通oss服务