`

自然连接,外连接,左外连接,右外连接

阅读更多

1.自然连接:

   结果基于表R和S的笛卡尔乘积,取对应的R和S中相同属性组都相同的值,同时相同属性组只保留一个

(百度上是先求笛卡尔乘积,然后再筛选,那样的话效率比较低,优化的方法应该是先筛选符合条件的元组,然后再进行笛卡尔乘积) 

 

先来看图示,2个表以及自然连接的结果


 

操作的步骤

 1.1找出2个表中相同的属性组:   属性A加上属性B



 

1.2找相同属性组中,相同的属性值所对应的元组 :

相同的属性值:  1. <a1,b1>  

                        2. <a1,b2> 

 

相同属性值对应的元组:

 第一组:   <a1,b1>对应 R表:<a1,b1,d1>                               

                                     S表:<a1,b1,e1>, <a1,b1,e2>

 

 第二组    <a1,b2>对应.R表:<a1,b2,d3>  <a1,b2,d4>           

                                     S表:<a1,b2,e3>

 

 

1.3同一组的元组之间进行笛卡尔乘积运算,相同属性只保留一个

(笛卡尔乘积后属性列是 R.A   R.B   D   S.A  S.B  R.E,因为(R.A和S.A), (R.B和S.B)是相同属性,所以只保留一个,最终列属性只有 A  B  D  E)

第一组结果


 

第二组结果



 

将2组的结果合并起来就得到了最终结果,这就是自然连接
 

 

2.外连接(左右外连接)

外连接是在自然连接的基础上,保留连接的一端没有匹配的元祖,另外一段用空值(null)填充

以上面的自然连接为基础,既然是左右外连接,那么左边的主表没有匹配的元组是

<a2,b1,d2>  右边没有匹配的元祖是 <a3,b2,e3> ,把这2个元组加入自然连接的表中,然后没有值的属性就赋值为null,如下图



 

3.左外连接,左边是主表,只保留左端未匹配的元祖

根据1的例子,可以得出左外连接


 

4.右边的S表是主表,保留右边的未匹配的记录,得到右外连接



 
 

  • 大小: 21.5 KB
  • 大小: 15.5 KB
  • 大小: 13.4 KB
  • 大小: 11.1 KB
  • 大小: 11.7 KB
  • 大小: 9.9 KB
  • 大小: 8.6 KB
  • 大小: 8.5 KB
分享到:
评论

相关推荐

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

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

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

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

    SQL左外连接,右外连接,全连接,内连接四种连接的差异借鉴.pdf

    SQL左外连接,右外连接,全连接,内连接四种连接的差异借鉴.pdf

    Oracle左(外)、右(外)、全(外)、(内)连接语法与SQL标准的比较

    通过对比可以看出,Oracle在实现左(外)、右(外)、全(外)以及内连接时,其语法与SQL标准有所不同,尤其是在左(外)和右(外)连接上使用了独特的“+”符号来表示可选项。对于全(外)连接,Oracle通过组合左(外)和右(外)...

    Hibernate 内连接和左外连接

    本文主要讨论的是内连接(INNER JOIN)和左外连接(LEFT OUTER JOIN)两种类型,并结合实际例子进行详细讲解。 内连接(INNER JOIN)返回两个表中匹配的行。这意味着只有当第一个表的某行与第二个表的某行有匹配的...

    数据库内外连接举例

    完整外连接(FULL JOIN 或 FULL OUTER JOIN)则同时包含左外连接和右外连接的所有行,即使在一个表中没有匹配的行,结果也会包含另一表的所有数据,对应列填充NULL。 交叉连接(CROSS JOIN)也称为笛卡尔积,它返回...

    查询语句-内连接外连接的区别

    外连接可以是左向外连接、右向外连接或完整外部连接。 左向外连接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是连接所匹配的行。若左表中的某行在右表中没有匹配的行,则在关联的结果中右表的选择...

    MySQL数据库:外连接.pptx

    外连接分为两种主要类型:左外连接和右外连接,每种类型都有其特定的用途和效果。 1. 左外连接(LEFT OUTER JOIN): 左外连接的结果集会包含左表(即在JOIN语句之前指定的表)的所有行,即使右表中没有与之匹配的...

    Gbase 8s查询之连接查询

    左外连接返回左表中的所有行和右表中的匹配行,右外连接返回右表中的所有行和左表中的匹配行,完全外连接返回两个表中的所有行。 自连接是指一个表与自身进行链接操作,这实际上是一种特殊形式的内连接。例如,我们...

    Oracle数据库左外连接

    Oracle连接有多中,我是在平常开发项目过程中用到的Oracle左连接进行了简单的阐述。

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

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

    数据库 左连接 右连接 全连接用法小结

    - **右外连接(RIGHT JOIN)**:与左连接相反,返回右表的所有记录,以及与左表匹配的记录。左表中没有匹配的记录将显示为NULL。 - **全外连接(FULL JOIN)**:返回两个表的所有记录,如果在其中一个表中没有匹配...

    数据库连接查询相关外连接内连接

    分为左外连接、右外连接和全外连接。例如,左外连接显示所有供应商信息,即使他们没有销售任何零件: ```sql SELECT s.f_sname, p.f_pname FROM t_supplier s LEFT OUTER JOIN t_sells ss ON s.f_sid = ss.f_sid ...

    MYSQL数据库中关于左连接右连接和内连接的区别.doc

    MYSQL数据库中关于左连接右连接和内连接的区别.doc

    mysql的左右内连接用法实例

    本文将深入讲解MySQL的左连接、右连接以及内连接的用法,并通过实例进行解析。 首先,我们创建了两个表`user_id`和`user_profile`。`user_id`存储独立的ID,而`user_profile`除了ID外还有名字(name)字段。然后,...

    Oracle表连接的具体讲解

    外连接是一种可以返回所有记录的表连接方式,它包括左外连接、右外连接和全外连接。 2.1 左外连接(Left Outer Join) 左外连接返回左表中的所有记录,以及右表中匹配的记录。如果右表中没有匹配的记录,那么结果...

    SQL优化使用内连接代替外连接

    SQL优化--使用内连接(inner join)代替外连接(left join,right join)

    SQL内连接与外连接.pdf

    外连接分为三种:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。 - **左外连接**返回左表的所有行,以及与右表匹配的行。如果右表中没有匹配的行,那么对应列的值将...

    二、MySQL连接查询学习笔记(多表连接查询:内连接,外连接,交叉连接详解)

    2)sql 99标准 **(推荐使用)** :支持内连接、外连接(左外 和 右外)、交叉连接 2.按功能分类: 1)内连接: 等值连接 非等值连接 自连接 2)外连接: 左外连接 ...

    查询语句顺序及外连接

    - **右外连接(RIGHT OUTER JOIN)**:与左外连接相反,返回右表中的所有行,左表中没有匹配的行将显示为NULL。 - **全外连接(FULL OUTER JOIN)**:返回左表和右表中所有行的组合,无论是否有匹配项。没有匹配的...

Global site tag (gtag.js) - Google Analytics