`
aijuans
  • 浏览: 1565578 次
社区版块
存档分类
最新评论

梦里”连接”知多少:多表查询之内连接 VS 外连接

阅读更多

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

                              

最近在做系统的过程中用到了不同的查询方式,这里简单总结一下:

首先要说明的是外连接中outer与非outer之间的关系。很多人都使用过left outer join或者是left join,但是多数人没有想过这两者之间究竟有没有区别。很不幸的告诉大家left outer join和left join之间其实是没有本质区别的,outer只是left join的一个属性,outer的存在只是显示的给出了left join的属性,如果没有的话默认的属性也是为outer的,他们两个在查询结果的实现上是没有区别的,right join与right outer join以及full join与full outer join之间的关系也是如此,所以在此我们只介绍inner join、left join、right join和full 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


6
7
分享到:
评论

相关推荐

    Gbase 8s查询之连接查询

    在 Gbase 8s 中,连接查询可以分为内连接、外连接和自连接三种类型。 内连接是将两个表连接在一起的操作,条件称为连接谓词或连接条件。内连接只返回两个表中与连接谓词匹配的行,不匹配的行不会被输出。例如,假设...

    SQL多表外连接查询.pdf

    SQL多表外连接查询是数据库操作中的一个重要知识点,它属于数据库查询技术的范畴。本文将介绍外连接查询的意义、实现步骤和方法,重点在于对父表和子表进行多表外连接查询时应注意事项。 外连接查询的意义: 外连接...

    sql左外连接、右外连接、内连接、全外连接的区别

    根据连接的方向和目的,可以分为几种不同的类型:左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)、内连接(INNER JOIN)以及全外连接(FULL JOIN)。下面将详细介绍这四种连接类型,并通过示例来解释它们之间的区别...

    SQL_左外连接_右外连接_全连接_内连接

    SQL中的连接操作是数据库查询中不可或缺的部分,它们用于合并来自两个或更多表的数据。以下是关于SQL连接的不同类型及其详细解释: 1. **内连接(Inner Join)**: 内连接返回两个表中存在匹配的行。这通常通过在`...

    SQL的数据查询功能之三---多表连接查询

    多表连接查询可以分为三种类型:内连接、外连接和交叉连接。内连接是最常用的连接类型,它将两个表的数据组合起来,以满足一定的连接条件。例如,查询每个学生及其选修课程的情况,可以使用内连接将 Student 表和 SC...

    Java学习日志(三十一): 多表查询,内连接,外连接

    本篇日志主要讲解了多表查询,包括内连接、外连接的概念及其在实际中的应用,同时还涉及到了数据库设计中的主键约束和外键关系。 首先,我们探讨的是用户和角色之间的多对多关系。在数据库设计中,如果一个用户可以...

    MySQL数据库:外连接.pptx

    MySQL数据库中的外连接是数据查询中的一个重要概念,它允许我们在联接两个或多个表时,不仅包含匹配的行,还包含至少一个表的所有行。这与内连接不同,内连接只返回两个表中存在匹配的行。外连接分为两种主要类型:...

    SQL左外连接,右外连接,全连接,内连接四种连接的差异[参照].pdf

    主要的连接类型有内连接、左外连接、右外连接和全连接。理解这些连接方式的区别有助于设计更有效的查询,以满足不同的数据需求。 1. **内连接(Inner Join)**: 内连接只返回那些在两个表中都存在匹配的行。...

    数据库多表连接

    数据库多表连接是数据库操作中的核心技能之一,它允许我们从多个相关联的表中获取数据,以便进行更复杂的查询和分析。在SQL语言中,多表连接主要用于合并多个表中的记录,根据它们之间的关系来获取所需信息。下面将...

    数据库连接表查询

    内连接(INNER JOIN)是数据库中最常用的连接类型之一,它返回两个表中满足指定连接条件的行。内连接可以分为显式内连接和隐式内连接。 - **显式内连接**:使用 `INNER JOIN` 关键字来实现。 - **隐式内连接**:...

    SQL左连接,右连接,内连接,交叉连接,自连接

    在关系型数据库管理系统中,连接(JOIN)是一种重要的查询方式,用于从两个或多个表中提取数据。根据连接的方式不同,可以分为左连接(LEFT JOIN)、右连接(RIGHT JOIN)、内连接(INNER JOIN)、全连接(FULL JOIN...

    SQL之左连接、右连接和全连接.doc

    SQL 左连接、右连接和全连接知识点 ...左连接、右连接和全连接都是外连接操作,用于检索多个表中的记录,而内连接是内连接操作,用于检索两个表中的匹配记录。选择合适的连接操作取决于具体的应用场景和需求。

    MySQL数据库:交叉连接和内连接.pptx

    如果要在不同表中查询数据,则必须在FROM子句中指定多个表。指定多个表时就要使用到连接。当不同列的数据组合到一个表中叫做表的连接。例如,在Bookstore数据库中需要查找购买了网页程序设计图书的会员姓名,就需要...

    用数据实例解说SQL内连接、外连接、全连接、交叉连接的运用与区别.doc

    在SQL查询中,连接操作是将两个或多个表的数据结合在一起的关键方法。本文将通过具体的实例,详细解析四种主要的连接类型:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)...

    VPX连接器连接关系示意图:包含前插板后插板和背板的连接关系

    VPX连接器的设计与连接关系是VPX系统的核心组成部分之一。通过详细了解不同类型的信号模块(差分、单端和基础模块)及其连接方式,可以帮助工程师更好地理解和设计高性能嵌入式计算系统。此外,熟悉VITA连接器的引脚...

    内连接和外连接

    内连接是最常见的连接类型之一,它返回两个表中具有匹配值的所有行。当执行内连接时,只有当两个表中的对应行满足连接条件时,才会出现在结果集中。在给定的部分内容中,有以下示例: ```sql SELECT vend_name, ...

    ORACLE表连接方式

    本文将对Oracle中的几种主要表连接方式进行详细介绍:内连接(Inner Join)、自然连接(Natural Join)、左外连接(Left Outer Join)、右外连接(Right Outer Join)、笛卡尔连接(Cartesian Join)、索引连接...

    数据库内连接、外连接.ppt.ppt

    总结,数据库连接是数据库管理系统中的核心功能,通过内连接、外连接和交叉连接,我们可以根据需求灵活地组合和筛选数据,实现复杂的数据分析和查询。理解并熟练运用这些连接类型对于任何数据库操作人员来说都是至关...

    oracle多表查询PPT课件.pptx

    Oracle数据库的多表查询是数据库操作中的核心技能之一,它涉及到如何从两个或更多个相关表中检索数据。本章的PPT课件主要讲解了如何进行多表查询,包括等值连接、非等值连接、外连接以及自连接等多种连接类型。 1. ...

Global site tag (gtag.js) - Google Analytics