zoukankan      html  css  js  c++  java
  • Join的实现步骤 以及连接的概念

    Join的实现步骤  以及连接的概念

    我们常说连接有三种,即 交叉连接、内连接、外连接,这三者的概念很容易模糊,现在我们先放下概念,搞清楚完整连接实现的步骤:

    一个完整的连接有三个步骤:做笛卡儿积过滤行添加额外的行

    现在给出一个完整的连接语句的例子:select * from Table1 left join Table2 on Table1.id=Table2.id



    以上Sql语句执行的过程                                   

    1、做笛卡儿积:

    Table1 Table2表中的所有的row 以任意的可能性进行组合,得到新的rows,若Table1中的rows.count
    = n,Table2
    中的row.count=m,这些新的rows共有n*m 行,将这些新的行组成一个虚拟表VT1,将VT1作为参数传到下一步骤。


    2
    、过滤Rows

    根据on 过滤器后面的断言“Table1.id=Table2.id ”对rows进行过滤,取得符合条件的行组成一个新的虚拟表VT2,将VT2作为参数传递到下一步骤。


    3
    、添加额外的rows

    join关键字的前面,可能有leftrightfull 三种关键字,如果关键字是left,意思是将坐标中的行全部加到虚拟表中,对应的有表处的数据为null,如果关键字是right,那么就是将右边的表加到虚拟表中,如果是full,那么就是都加到虚拟表中。最后返回虚拟表VT3.

     

    如果除了select还有其他的步骤,那么就将VT3继续作为参数向下传递,如果没有,那么就将VT3作为最终的结果输出。

    交叉连接、内连接、外连接的概念                            

    1、如果上面提到的三个步骤中,只有第一个步骤——做笛卡儿积,那么我们就说这个连接是交叉连接(cross join),一般情况下我们可以将cross关键字省略掉
    2、如果有且只有前两个步骤,那么我们就说这个连接是一个内连接(inner join)
    3、如果三个步骤都执行了,那么这个连接就是一个外连接(outer join),当然具体是有left outer join/right outer join /full outer join



     


     


     

  • 相关阅读:
    Java从入门到精通——调错篇之ORACLE 打开PLSQL时提示ora-01033
    2012年——2013年总结
    一个订单相关的存储过程(MySQL)
    EHCache 实现通用类 CacheManager
    超越算法来看待个性化推荐
    Jackson怎样转换这样的字符串? String jsonStr = "{dataType:'Custom',regexp:'t\d+',msg:'输入不正确'}";
    实时个性化推荐系统简述
    Java从入门到精通——基础篇之Servlet与JSP的区别
    TIME_WAIT引起Cannot assign requested address报错
    synchronized 用法,实例讲解
  • 原文地址:https://www.cnblogs.com/key1309/p/3435646.html
Copyright © 2011-2022 走看看