zoukankan      html  css  js  c++  java
  • 有关数据库中的 连接(外连接、内链接、全连接)

     


     
     
    今天写程序,碰到了关于数据库的连接问题。所以决定,争取搞定它。。。
    查了查网上高手的解释。。。然后结合自己的运行结果。。。貌似自己有点开悟了。。。

    SQL语句中有关的连接主要有: 外连接、内链接、全连接。
    1、外连接  又分为: 左外连接、右外连接、完整外部联接。。。

    LEFT   JOIN   或   LEFT   OUTER   JOIN。  
    左向外联接的结果集包括   LEFT   OUTER   子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。

    RIGHT   JOIN   或   RIGHT   OUTER   JOIN。  
    右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。

    FULL   JOIN   或   FULL   OUTER   JOIN。  
    完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

    INNER  JOIN
    内连接为 两个表中必须都同时满足条件时,也可以说是两个表中都必须在另一个表中有对应的项,而不能为空。才返回该行。。。

    CROSS  JOIN
    其实对 交叉连接 还是不太明白,,,只知道 没有 where 字句的交叉连接相当于 笛卡尔积。交叉连接 后面只能接  where  字句,不能接  on  。。。

    没有左内连接、右内连接。

    个人理解 : 左外连接、右外连接中的 左 、 右 是说的 以哪个表为准。
                外连接、内连接中的  外、 内  是说的 是否去掉 null列。。。
                    即外连接  不去掉空列。。。内连接去掉空列。。。

    下面是  copy  的例子:
    例子:  
      a表     id   name     b表     id   job   parent_id  
                  1   张3                   1     23     1  
                  2   李四                 2     34     2  
                  3   王武                 3     34     4  
       
      a.id同parent_id   存在
    关系  
       
      内连接  
      select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id  
       
      结果是    
      1   张3                   1     23     1  
      2   李四                2     34     2  
       
      左连接   
      select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id  
       
      结果是    
      1   张3                   1     23     1  
      2   李四                 2     34     2  
      3   王武                 null   

      右连接  
      select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id  
       
      结果是    
      1   张3                   1     23     1  
      2   李四                 2     34     2  
      null                 3     34     4  
       
      完全连接   
      select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   

      结果是    
      1   张3                   1     23     1  
      2   李四                 2     34     2  
      null                 3     34     4  
      3   王武                 null
  • 相关阅读:
    Explain 索引优化分析
    组合索引与前缀索引
    MySQL 索引的类型
    MySQL 字符集及校验规则
    MySQL 连接查询
    DQL 数据查询语言
    DML 数据操纵语言
    DCL 数据控制语言
    DDL 数据定义语言
    蓝桥杯大学B组省赛2020模拟赛(一)题解与总结
  • 原文地址:https://www.cnblogs.com/leihupqrst/p/3652391.html
Copyright © 2011-2022 走看看