精华内容
下载资源
问答
  • 左连接 ,右连接,内连接和全外连接的4者区别

    万次阅读 多人点赞 2018-07-24 22:36:02
    基本定义:  left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。... full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。 举个例子:  ...

    基本定义:

      left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。

      right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。

      inner join (等值连接或者叫内连接):只返回两个表中连接字段相等的行。

      full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

    举个例子:

     A表          
    
      id   name  
    
      1  小王
    
      2  小李
    
      3  小刘
    
      B表
    
      id  A_id  job
    
      1  2    老师
    
      2  4    程序员

    内连接:(只有2张表匹配的行才能显示)

    select a.name,b.job from A a  inner join B b on a.id=b.A_id
    
      只能得到一条记录
    
      小李  老师

    左连接:(左边的表不加限制)

    select a.name,b.job from A a  left join B b on a.id=b.A_id
    
      三条记录
    
      小王  null
    
      小李  老师
    
      小刘  null

    右连接:(右边的表不加限制)

    select a.name,b.job from A a  right join B b on a.id=b.A_id
    
      两条记录
    
      小李  老师
    
      null  程序员

     

    全外连接:(左右2张表都不加限制)

    select a.name,b.job from A a  full join B b on a.id=b.A_id
    
      四条数据
    
      小王  null
    
      小李  老师
    
      小刘  null
    
      null  程序员

    注:在sql中l外连接包括左连接(left join )和右连接(right join),全外连接(full join),等值连接(inner join)又叫内连接。

     

    我的座右铭:不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。

     

    展开全文
  • 外连接

    2017-07-04 09:18:48
    外连接 包括左向外联接、右向外联接和完整外部联接。 左连接:left join 或 left outer join 左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,不仅是连接列所匹配的行。如果左表的某行在右表中没有...
    外连接
    包括左向外联接、右向外联接和完整外部联接。
    左连接:left join 或 left outer join
    左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,不仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,于是在相关联的结果集行中,右表的所有选择列均为空值(null)。
    sql 语句:select * from table1 left join table2 on table1.id=table2.id
    右向外连接:right join 或 right outer join
    右向外联接是左向外联接的反向联接。将会返回右边表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
    sql 语句:select * from table1 right join table2 on table1.id=table2.id
    完整外部联接:full join 或 full outer join
    完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
    sql 语句:select * from table1 full join table2 on table1.id=table2.id
    展开全文
  • 一. 内连接(inner join) 内连接包括相等联接和自然联接,通常使用像 = 或 <> 之类的比较运算符。...外连接包括 1)LEFT JOIN或LEFT OUTER JOIN 简单地说,就是以左边表的数据行数为两个组合表的...

    一. 内连接(inner join)

    内连接包括相等联接和自然联接,通常使用像 =  或 <> 之类的比较运算符。

    简单地讲,内连接就是以两个表中相关联的列作为筛选条件,选出符合查询条件的所有数据行。

     

    二. 外连接(Outer join) 

    外连接包括

    1)LEFT  JOIN或LEFT OUTER JOIN   简单地说,就是以左边表的数据行数为两个组合表的总行数,如果左边表的某一行数值没有映射到右边表的某一行,那么照样输出左边表的那一行数值,而对应右表数值相应位置的值为空值。(A: 4X3, B: 3X3, AB = 4X6)

    2)RIGHT  JOIN 或 RIGHT  OUTER  JOIN  与left join相反,就是以右边表的数据行数为两个组合表的总行数,如果右边表的某一行数值没有映射到左边表的某一行,那么照样输出右边表的那一行数值,而对应左表数值相应位置的值为空值。(A: 4X3, B: 3X3, AB = 3X6)

    3)FULL  JOIN 或 FULL OUTER JOIN 完整外部联接即返回左表和右表中的所有行。(A: 4X3, B: 3X3, AB = 7X6)

     

    三. 交叉连接(Cross join)
    交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。  (A: 4X3, B: 3X3, AB = 12X6)  

     

    例子:   
    --------------------------------------------------------------------------------------
      A表     id   name class address        B表     id   job   parent_id   
                  1   张3      A1       G                         1     23     1   
                  2   李四    A2        J                          2     34     2   
                  3   王武    A3        S                         3     34     5

                  4   小红    A4       H                         

     

    A.id 同 B.parent_id   存在关系   
    ---------------------------------------------------------------------------------------

    A: 4X3, B: 3X3, AB = 4X6

    select * from A inner join B on A.id = B.parent id;

    AB table :

       id   name class address id   job   parent_id   
       1   张3      A1       G               1     23     1   
       2   李四    A2        J                2     34     2   
       3   王武    A3        S               3     34     5 

       4   小红    A4       H                null

     

    转载于:https://www.cnblogs.com/Xbingbing/p/8686921.html

    展开全文
  • 外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行,外连接包括左外连接、右外连接和全外连接。 用一张题来说明他们之间的关系。 下面具体说一下他们之间的用法: 内连接包括等值连接,不等值...

    内连接:指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

    外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行,外连接包括左外连接、右外连接和全外连接。

    用一张题来说明他们之间的关系。

    在这里插入图片描述

    下面具体说一下他们之间的用法:

    内连接包括等值连接,不等值连接和自然连接,由于后两个用的很少,这里就不做叙述了。
    等值连接:在连接条件中使用等于号(=)运算符,其查询结果中列出被连接表中的所有列,包括其中的重复列。

    内连接中等值连接的例子:

    在这里插入图片描述

    mysql> select * from student s,score c where s.name=c.name;
    +-----+------+-------+------+-------+
    | num | name | class | name | grade |
    +-----+------+-------+------+-------+
    |   2 | jack |     1 | jack |    98 |
    |   4 | pony |     2 | pony |    85 |
    |   5 | rose |     1 | rose |    81 |
    +-----+------+-------+------+-------+
    3 rows in set (0.04 sec)
    

    此等值连接等价于 select * from student s inner join score c on s.name=c.name;

    左外连接:返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值。

    mysql> select * from student s left join score c on  s.name=c.name;
    +-----+------+-------+------+-------+
    | num | name | class | name | grade |
    +-----+------+-------+------+-------+
    |   2 | jack |     1 | jack |    98 |
    |   4 | pony |     2 | pony |    85 |
    |   5 | rose |     1 | rose |    81 |
    |   1 | tom  |     2 | NULL | NULL  |
    |   3 | mary |     3 | NULL | NULL  |
    +-----+------+-------+------+-------+
    5 rows in set (0.05 sec)
    
    

    这里可以看到student表中的数据已经完全返回,对于没有和坐标匹配上的数据用Null值代替。

    右外连接:与左外连接相反,返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值。

    mysql> select * from student s right join score c on  s.name=c.name;
    +------+------+-------+------+-------+
    | num  | name | class | name | grade |
    +------+------+-------+------+-------+
    |    2 | jack |     1 | jack |    98 |
    |    4 | pony |     2 | pony |    85 |
    |    5 | rose |     1 | rose |    81 |
    | NULL | NULL | NULL  | bill |    74 |
    +------+------+-------+------+-------+
    4 rows in set (0.05 sec)
    
    mysql> 
    

    全外连接:不管匹配不匹配,全部显示出来,左表在右边没有的显示NULL,右表在左边没有的显示NULL。
    按照正常情况下全外连接应该是select * from student s full join score c on s.name=c.name; 但是mysql并不支持全外连接,所以我们用union来代替full

    mysql> select * from student s left join score c on  s.name=c.name
        -> union   select * from student s right join score c on  s.name=c.name;
    +------+------+-------+------+-------+
    | num  | name | class | name | grade |
    +------+------+-------+------+-------+
    |    2 | jack |     1 | jack |    98 |
    |    4 | pony |     2 | pony |    85 |
    |    5 | rose |     1 | rose |    81 |
    |    1 | tom  |     2 | NULL | NULL  |
    |    3 | mary |     3 | NULL | NULL  |
    | NULL | NULL | NULL  | bill |    74 |
    +------+------+-------+------+-------+
    6 rows in set (0.05 sec)
    
    mysql> 
    

    交叉连接:也成为了笛卡尔积,因为相对于内连接来讲他缺少了连接条件,它返回的是两个表行数的乘积,所以为了避免笛卡尔积的出现,当我们进行两张表或者多张表连接时一定要加上最后的连接条件。

    mysql> select * from student,score;
    +-----+------+-------+------+-------+
    | num | name | class | name | grade |
    +-----+------+-------+------+-------+
    |   1 | tom  |     2 | bill |    74 |
    |   1 | tom  |     2 | jack |    98 |
    |   1 | tom  |     2 | pony |    85 |
    |   1 | tom  |     2 | rose |    81 |
    |   2 | jack |     1 | bill |    74 |
    |   2 | jack |     1 | jack |    98 |
    |   2 | jack |     1 | pony |    85 |
    |   2 | jack |     1 | rose |    81 |
    |   3 | mary |     3 | bill |    74 |
    |   3 | mary |     3 | jack |    98 |
    |   3 | mary |     3 | pony |    85 |
    |   3 | mary |     3 | rose |    81 |
    |   4 | pony |     2 | bill |    74 |
    |   4 | pony |     2 | jack |    98 |
    |   4 | pony |     2 | pony |    85 |
    |   4 | pony |     2 | rose |    81 |
    |   5 | rose |     1 | bill |    74 |
    |   5 | rose |     1 | jack |    98 |
    |   5 | rose |     1 | pony |    85 |
    |   5 | rose |     1 | rose |    81 |
    +-----+------+-------+------+-------+
    20 rows in set (0.06 sec)
    
    mysql> 
    
    展开全文
  • 看了网上好多关于这一块的博客,介绍的都不全面,直接介绍了一部分,实在不爽,今天我跟大家把我理解的这一块全面的介绍下,配有sql语句送给大家。...2,外连接,外连接包括左连接,右连接。直接看左连接和右连接...
  • 内连接与外连接的区别

    千次阅读 2019-01-02 20:01:16
    2.外连接包括: 2.1 左外连接:左边为主表,左边的表显示全部;右边为副表,右边无符号数据时显示null,不符合的不显示; 2.2 右外连接:右边为主表,右边的表显示全部;左边为副表,左边无符号数据时显示null,不...
  • sql表连接分成外连接、内连接和...外连接外连接包括三种,分别是左外连接、右外连接、全外连接。对应的sql关键字:LEFT/RIGHT/FULL OUTER JOIN,通常我们都省略OUTER关键字,写成LEFT/RIGHT/FULL JOIN。在左、右外连接...
  • sql 内连接与外连接

    2011-03-24 22:25:12
    sql中的外连接包括,左外连接和右外连接,我的理解是: 左外连接是以左边的表为主,右边的只为辅表,如果查出来的结果显示的话,右边没有值的,用空值进行显示; 右外连接是以右边的表为主,左边的只为辅表,...
  • 包括外连接、右外连接和全外连接。左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。全外连接:左外连接 union 右外连接。首先创建两...
  • 分为内连接和外连接,外连接包括左连接、右连接、全连接。 左连接也叫左外连接,右连接也叫右外连接。 mysql不支持全连接。 以选修课表为例,有a、b两门课,学生可以选择多门课。 # 选修课表a、b create table a_...
  • 包括外连接、右外连接和全外连接。左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。全外连接:左外连接 union 右外连接。首先创建两...
  • SQL的四种连接-左外连接、右外连接、内连接、全连接 今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在...
  • MySQL 学习笔记(15)— 连接查询(内连接、左外连接、右外连接、全外连接、交叉连接、... 支持的连接查询包括内连接、外连接、交叉连接、自然连接以及自连接等。其中,外连接又可以分为左外连接、右外连接以及全...
  • 本篇文章是对SQL中的四种连接-左外连接、右外连接、内连接、全连接进行了详细的分析介绍,需要的朋友参考下1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。内联接使用...
  • 内外连接

    2017-09-20 10:31:27
    SQL连接可以分为内连接、外连接、交叉连接。   数据库数据:   book表 stu表   1.内连接 1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括...
  • 左向外连接的结果集包括left outer 子句中指定的左表的所有行 而不仅仅是联结列所匹配的行 左表右表中没有匹配的行 则右表的所有列表均为空值 2.2 right join 右外连接 左表如果没有匹配的行的话 则左表返回空值 2.3...
  • mysql 连接 方式 内连接 内连接: 使用比较运算符 更具每个表中共有的列匹配行 ; 使用 典型的连接运算,使用像 = 或 <> 之类的比较运算符 ... 右向外连接是左向外连接的反向连接。将返回右表的所有行。如果
  • 参考: http://www.cnblogs.com/hehaiyang/p/4745897.html ... Oracle 外连接(OUTER JOIN)包括以下: 左外连接(左边的表不加限制) left [outer] join, a.key=b.key
  • 内连接与外连接区别

    千次阅读 2016-08-24 00:59:03
    外连接 分左连接、右连接、全连接。 左连接就是把左边表的数据全部保留,右边表只保留能连接上的数据。 右连接同左连接。 全连接就是保留2个表的全部数据,包括连接上的,也包括没有连接上的。      ...
  • 外连接分三类:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。 1.左外连接 =左连接 left join 是left outer join的简写,left join默认是outer属性的。 左向外...
  • table1: id name 1 lee 2 zhang ...一、外连接 1.概念:包括左向外联接、右向外联接或完整外部联接 2.左连接:left join 或 left outer join (1)左向外联接的结果集包括 LEFT OUTER 子句中
  • 理解了左外连接,就理解了右...2.左向外连接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。 起初我的理解是,left join 所返回的记录数=左表记录数+右表在on条件中匹配到的记
  • account 表custom 表0 基础inner join left join外连接包括 第一个表 的 所有行,但 仅仅 包含 第二个表 中那些匹配行 的数据。1 左外连接 与 右外连接关键词 left 指出连接左边的表决定结果集的行数,而右边的只...
  • 简单说:  内连接筛选出两个表中都符合连接条件的记录  外连接包括 左连接,右连接 和 全连接  左连接筛选出所有符合条件的左表记录,不论有没有对应的右表记录。  右连接恰恰相反,...
  • 本篇文章是对SQL中的四种连接-左外连接、右外连接、内连接、全连接进行了详细的分析介绍,需要的朋友参考下。1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。 内联接使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,004
精华内容 1,201
关键字:

外连接包括