zoukankan      html  css  js  c++  java
  • MySQL自然连接,内连接,外连接的区别(join)

    数据中的连接join分为内连接、自然连接、外连接,外连接又分为左外连接、右外连接、全外连接

    • 表一
      在这里插入图片描述

    当然,这些分类都是在连接的基础上,是从两个表中记录的笛卡尔积中选取满足连接的记录。笛卡尔积简单的说就是一个表里的记录要分别和另外一个表的记录匹配为一条记录,即如果表A有3条记录,表B也有三条记录,经过笛卡尔运算之后就应该有3*3即9条记录。如下表:

    • 表二在这里插入图片描述

    1. 自然连接(natural join)

    自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。
    sql语句:Select …… from 表1 natural join 表2
    结果:
    在这里插入图片描述

    2. 内连接(inner join)

    内连接基本与自然连接相同,不同之处在于自然连接要求是同名属性列的比较,而内连接则不要求两属性列同名,可以用using或on来指定某两列字段相同的连接条件。
    sql语句:Select …… from 表1 inner join 表 2 on 表1.A=表2.E
    结果:
    在这里插入图片描述
    还少了一个元组(1,2,3,8,9,1)

    自然连接时某些属性值不同则会导致这些元组会被舍弃,那如何保存这些会被丢失的信息呢,外连接就解决了相应的问题。外连接分为左外连接、右外连接、全外连接。外连接必须用using或on指定连接条件。
    在这里插入图片描述
    在这里插入图片描述

    3. 左外连接(left outer join)

    左外连接是在两表进行自然连接,只把左表要舍弃的保留在结果集中,右表对应的列上填null。
    sql语句:Select …… from 表1 left outer join 表2 on 表1.C=表2.C
    结果:
    在这里插入图片描述
    在这里插入图片描述

    4. 右外连接(rignt outer join)

    右外连接是在两表进行自然连接,只把右表要舍弃的保留在结果集中,左表对应的列上填null。
    Select …… from 表1 rignt outer join 表2 on 表1.C=表2.C
    结果:
    在这里插入图片描述
    在这里插入图片描述

    5. 全外连接(full join)

    全外连接是在两表进行自然连接,只把左表和右表要舍弃的都保留在结果集中,相对应的列上填null。
    Select …… from 表1 full join 表2 on 表1.C=表2.C
    结果:
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    windows的80端口被占用时的处理方法
    Ansible自动化运维工具安装与使用实例
    Tomcat的测试网页换成自己项目首页
    LeetCode 219. Contains Duplicate II
    LeetCode Contest 177
    LeetCode 217. Contains Duplicate
    LeetCode 216. Combination Sum III(DFS)
    LeetCode 215. Kth Largest Element in an Array(排序)
    Contest 176 LeetCode 1354. Construct Target Array With Multiple Sums(优先队列,递推)
    Contest 176
  • 原文地址:https://www.cnblogs.com/isalo/p/15384186.html
Copyright © 2011-2022 走看看