`

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

阅读更多

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 连接 JOIN 例解左连接,右连接,全连接,内连接,交叉连接,自连接

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

    数据结构左右连接

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

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

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

    数据库:左连接、右连接、全连接

    外连接(OUTER JOIN)是一种连接操作,用于查询多个表中的数据,但不 sadece 返回符合连接条件的数据行,而是返回左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中的所有数据行。外连接可以分为三种...

    数据库表连接(内外、左右连接).docx

    在MySQL中,虽然不直接支持全外连接,但可以通过结合左外连接和右外连接达到相同的效果。例如,`SELECT * FROM voteMaster vm LEFT OUTER JOIN voter vt ON vm.id=vt.id UNION ALL SELECT * FROM voteMaster vm ...

    oracle左右连接方法

    本文将详细介绍Oracle中的左连接(Left Join)、右连接(Right Join)、内连接(Inner Join)、全连接(Full Join)以及交叉连接(Cross Join)的方法,并通过示例来帮助理解每种连接的特点。 ### 一、左连接(Left...

    Oracle左右连接及一些练习资料

    "SQL语句.pdf"可能包含了更广泛的SQL语句类型,包括各种JOIN操作,如左连接、右连接、全连接和内连接,以及子查询、联接查询等。通过这些练习,你可以提升SQL编写能力,更好地处理复杂的数据关系。 "Oracle_01.pdf...

    Oracle 左连接、右连接

    本篇文章将深入探讨Oracle中的左连接(LEFT JOIN)和右连接(RIGHT JOIN),这两种连接方式都是为了在不同表之间建立联系,特别是在数据不完全匹配的情况下。 首先,我们来看一下左连接(LEFT JOIN)。左连接返回左...

    Oracle左连接,右连接.doc

    右连接也称为右外连接,它会返回右表的所有行,并且只返回左表中与右表匹配的行。如果左表中没有匹配的行,则会填充NULL值。 **语法示例:** ```sql SELECT a.studentno, a.studentname, b.classname FROM ...

    oracle数据库表左连接右连接全连接的认识

    左连接和右连接的区别在于基准表的选择,左连接将左边的表作为基准表,全表数据都要显示,而右连接将右边的表作为基准表,全表数据都要显示。例如: `SELECT e.empno, e.ename, d.dname FROM emp e LEFT JOIN dept ...

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

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

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

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

    自连接外连接

    - **右外连接(Right Outer Join)**:与左外连接相反,优先显示右侧表的所有记录,左侧表中未找到匹配项时显示为`NULL`。 - 示例代码: ```sql SELECT t.*, s.* FROM teacher t RIGHT JOIN student s ON t.id ...

    Oracle外连接查询

    全外连接结合了左外连接和右外连接的功能,返回两个表中的所有记录,无论是否存在匹配。如果一个表中没有匹配项,那么结果将显示另一个表的所有字段,并在没有匹配的字段处填充NULL。 除了这些外连接,还有其他类型...

    MySQL数据库:外连接.pptx

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

    MYSQL 左连接右连接和内连接的详解及区别

    主要介绍了MYSQL 左连接右连接和内连接的详解及区别的相关资料,需要的朋友可以参考下

    数据库练习四(内连接-外连接)答案.doc

    右外连接(RIGHT OUTER JOIN)返回右表所有记录,并返回左表匹配的记录;全外连接(FULL OUTER JOIN)返回所有记录。 4. 自然连接(natural join): 自然连接用于连接两个或多个表,并返回公共部分的记录。其基本...

    SQL子查询、内连接和外连接查询

    在查询中,使用了右外连接找出还未被任何学生选修的课程: ```sql SELECT C.cno AS 课程号, cname AS 课程名称,class_hourse as 学时,study_num as 学分 FROM Select_Course as SC RIGHT OUTER JOIN Course as C ...

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

    相反,右连接(RIGHT JOIN)或右外连接则是返回右表(`t_user`)的所有记录,即使在左表(`t_order`)中没有匹配项。如果左表中没有匹配的记录,则结果将为NULL。右连接的SQL语句如下: ```sql SELECT O.orderid, O...

Global site tag (gtag.js) - Google Analytics