`

SQL之左连接、右连接和全连接(转载)

    博客分类:
  • sql
SQL 
阅读更多
  內连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来。

  为更好的理解这个概念,我们介绍两个表作演示。苏格兰议会中的政党表(party)和议员表(msp)。

party(Code,Name,Leader)
Code: 政党代码
Name: 政党名称
Leader: 政党领袖

msp(Name,Party,Constituency)
Name: 议员名
Party: 议员所在政党代码
Constituency: 选区

  在介绍左连接、右连接和全连接前,有一个数据库中重要的概念要介绍一下,即空值(NULL)。

  有时表中,更确切的说是某些字段值,可能会出现空值, 这是因为这个数据不知道是什么值或根本就不存在。

  空值不等同于字符串中的空格,也不是数字类型的0。因此,判断某个字段值是否为空值时不能使用=,<>这些判断符。必需有专用的短语:IS NULL 来选出有空值字段的记录,同理,可用 IS NOT NULL 选出不包含空值的记录。

  例如:下面的语句选出了没有领导者的政党。(不要奇怪,苏格兰议会中确实存在这样的政党)

SELECT code, name FROM party
WHERE leader IS NULL

  又如:一个议员被开除出党,看看他是谁。(即该议员的政党为空值)

SELECT name FROM msp
WHERE party IS NULL

  好了,让我们言归正传,看看什么叫左连接、右连接和全连接。

  A left join(左连接)包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。

  同理,也存在着相同道理的 right join(右连接),即包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。
而full join(全连接)顾名思义,左右表中所有记录都会选出来。

  讲到这里,有人可能要问,到底什么叫:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。

  我们来看一个实例:

SELECT msp.name, party.name
FROM msp JOIN party ON party=code

  这个是我们上一节所学的Join(注意:也叫inner join),这个语句的本意是列出所有议员的名字和他所属政党。

  很遗憾,我们发现该查询的结果少了两个议员:Canavan MSP, Dennis。为什么,因为这两个议员不属于任何政党,即他们的政党字段(Party)为空值。那么为什么不属于任何政党就查不出来了?这是因为空值在作怪。因为议员表中政党字段(Party)的空值在政党表中找不到对应的记录作匹配,即FROM msp JOIN party ON party=code 没有把该记录连接起来,而是过滤出去了。

  在该短语中,msp在Join的左边,所有称为左表。party在Join的右边,所有称为右表。

  现在再看看这句话,“包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录”,意思应该很明白了吧。执行下面这个语句,那两个没有政党的议员就漏不了了。

SELECT msp.name, party.name
FROM msp LEFT JOIN party ON party=code

  关于右连接,看看这个查询就明白了:

SELECT msp.name, party.name
FROM msp RIGHT JOIN party ON msp.party=party.code

  这个查询的结果列出所有的议员和政党,包含没有议员的政党,但不包含没有政党的议员。 那么既要包含没有议员的政党,又要包含没有政党的议员该怎么办呢,对了,全连接(full join)。

SELECT msp.name, party.name
FROM msp FULL JOIN party ON msp.party=party.code
分享到:
评论

相关推荐

    sql左连接,右连接,内连接,全连接讲解

    sql左连接,右连接,内连接,全连接详细讲解

    由浅入深sql语句(外键,左关联,右关联,全关联)

    内连接、左连接、右连接和全连接各有其适用场景,理解它们的原理并灵活运用是提高SQL查询效率的关键。此外,正确设置外键有助于维护数据库的数据完整性和一致性。希望本文能帮助大家更好地掌握SQL中的连接技术,为...

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

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

    SQL 连接 JOIN 例解左连接,右连接,全连接,内连接,交叉连接,自连接

    本文将详细介绍六种主要类型的 JOIN:左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)、内连接(INNER JOIN)、交叉连接(CROSS JOIN)以及自连接(SELF JOIN)。通过实例讲解每种连接的特点和应用...

    SQL 左外连接,右外连接,全连接,内连接 四种连接的差异.doc

    SQL 连接的四种类型:左外连接、右外连接、全连接、内连接 在 SQL 中,连接(JOIN)是一种非常重要的概念,它允许我们从多个表中检索数据。连接可以分为四种类型:左外连接、右外连接、全连接和内连接。每种连接都...

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

    通过上述分析可以看出,左外连接、右外连接、内连接和全外连接各有特点,适用于不同的场景。选择合适的连接方式对于获取正确的数据非常重要。在实际应用中,应根据具体需求灵活选用这些连接方式。

    左外连接右外连接,内连接区别

    本文将深入探讨三种主要的连接类型:左外连接、右外连接和内连接,并通过具体的例子来阐述它们之间的区别。 首先,让我们从内连接(INNER JOIN)开始。内连接返回的是两个表中满足特定连接条件的记录。在示例中,`...

    SQL左外连接,右外连接,全连接,内连接4种连接的区别[归类].pdf

    以下是四种主要的连接类型:内连接、左外连接、右外连接和全连接。 1. **内连接(INNER JOIN)**: 内连接是基于两个表之间的匹配列的值进行的连接,它只返回两个表中存在匹配的行。例如,在`authors`和`...

    如何查看sql server数据库连接数

    查看 SQL Server 数据库连接数的多种方法 SQL Server 数据库连接数是一个重要的性能指标,它可以帮助数据库管理员了解当前数据库的工作负载和性能。查看数据库连接数有多种方法,本文将介绍四种不同的方法来查看 ...

    SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接

    外连接可以分为左连接、右连接和全连接三种。 * 左连接:是以左表为基准,将 a.stuid = b.stuid 的数据进行连接,然后将左表没有的对应项显示,右表的列为NULL。 ```sql select * from book as a left join stu as ...

    sql查询左连接on与where的区别(2).pdf

    Left Join操作能够将左表(left table)的所有记录与右表(right table)中匹配的记录连接起来,并且在右表中没有匹配的情况下,会用NULL值填充。而on和where是用于指定连接条件和过滤结果集的关键字,在Left Join中...

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

    本文将通过具体的实例,详细解析四种主要的连接类型:内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN),以及如何理解和使用它们。 首先,我们来看内连接(INNER JOIN)。内...

    oracle数据库 左连接 右连接 自连接 。。

    左连接返回左表(也就是连接操作中指定的第一个表)的所有记录,以及与之匹配的右表记录。如果右表中没有匹配的记录,结果将显示左表记录和右表的NULL值。这种连接类型对于保留左表所有数据,即使在右表中没有对应...

    数据结构左右连接

    根据提供的文件信息,我们可以深入探讨数据结构中的左连接(Left Join)与右连接(Right Join),以及数据库中的授权操作。 ### 数据结构中的左连接与右连接 #### 左连接(Left Join) 左连接是一种数据库查询操作...

    SQL 四种连接-左外连接、右外连接、内连接、全连接详解

    SQL中的四种连接方式是数据库操作中非常重要的概念,它们分别是内连接、左外连接、右外连接和全连接。理解这四种连接可以帮助我们更有效地从多个表中提取所需信息。 1. **内连接(Inner Join)** 内连接是最常见的...

    Oracle 左连接、右连接

    右连接在你需要保留所有右表数据,同时获取与之关联的左表数据时很有用。以同样的员工和部门表为例,如果你想要列出所有部门及其员工(即使有些部门目前没有员工),则可以使用右连接。 ```sql SELECT Employees....

    sql_server连接Oracle方法(最全)

    "SQL Server 连接 Oracle 方法" SQL Server 连接 Oracle 方法是数据库管理系统中的一个重要话题。本文将详细介绍如何在 SQL Server 中连接 Oracle 数据库,并解决在连接过程中可能出现的问题。 安装 Oracle 客户端...

    如何连接SQL数据库

    本文将深入探讨如何连接SQL数据库,同时也会提及Access作为参考。 一、SQL数据库连接基础 SQL数据库连接涉及几个关键要素:数据库服务器、数据库名、用户名、密码以及连接驱动。以下是一般的连接步骤: 1. **选择...

    sql server客户端连接工具

    SQL Server客户端连接工具是数据库管理员和开发人员用来与Microsoft SQL Server进行交互的重要工具。它提供了图形用户界面(GUI)和命令行选项,使得用户能够轻松地执行查询、管理数据库对象以及进行其他数据库维护...

Global site tag (gtag.js) - Google Analytics