1、各种连接的解读说明:

1.1、各种连接的含义和说明

连接 语法 作用
左外连接 left join 返回左表中所有的记录以及右表中连接字段相等的记录
右外连接 right join 返回右表中所有的记录以及左表中连接字段相等的记录。
全外连接 full join 返回两个表中的行:left join + right join(重合部分的相等数据只保留一份)
自连接
笛卡尔积 cross join(不带 WHERE 子句) 结果是笛卡尔积,就是第一个表的行数乘以第二个表的行数。
内连接 inner join 又叫等值连接,只返回两个表中连接字段相等的行。
自然连接 natrual join 和内连接很类似,区别在于结果的重复列上:
自然连接重复列只保存一列(列去重),内连接重复列都保存(列不去重)

1.1.1 所有连接分类

说明:

  • 等值连接和不等连接的区别:都是内连接,等值连接有on条件,不等连接没有on条件

1.1.2 left join 和 left outer join 区别

简单来说就是没有区别,只是写法不同。( sql-92 标准中应为 LEFT Outer Join,而 SQLServer 中两种都支持的。 )

参考: 请说明 left join 和 left outer join 的区别 - CSDN 论坛

1.2、神图参考

1.4、一些参考说明

2、on 和 where 条件的区别

2.1 on 和 where 条件的区别 (只对外连接有区别)

前提说明:数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。

  • on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
  • where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

  • 如果条件中同时有on和where 条件:

    • SQL的执行实际是两步

      • 第一步:根据on条件得到一个临时表
      • 第二步:根据where 条件对上一步的临时表进行过滤,得到最终返回结果。
  • 如果条件中只有on:
    • 那么得到的临时表就是最终返回结果

主要内容来自: sql (join on 和 where 的执行顺序) - higirle - 博客园 ,具体demo也可以看原文。

2.2 具体连接的区别

2.2.1 对于内连接没区别

因为内连接生成的临时表中只会保留符合on条件的数据,所以数据在 on 和 where 条件中过滤没区别。

2.2.2 对于外连接(左连接,右连接,全连接)有区别

而外连接生成的临时表中会保留不符合on条件的数据,对于这些数据,在 on 和 where 条件中过滤就区别了。

2.3 多张(>=3)表连接更显 on 和 where 条件的区别

sql 语句中 join on 和 where 用法的区别和联系 - 一个破名想半年的个人空间 - OSCHINA
注:文中的一个观点和说明很神奇。
总结下:如果是多张表连接,那么在生成临时表的过程中过滤数据和对生成后的临时表过滤数据就有明显区别了。
这种情况下: inner join on 比直接 where 的查询效率要高

3、结束

MySQL的join on和 where 的执行顺序和区别,以及各种连接说明的更多相关文章

  1. 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)

    [分析]浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang) 今天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间 ...

  2. 拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别

    一.引言 本来想记录一下关于用户登陆和登陆之后的权限管理.菜单管理的问题,想到解决这个问题用到Interceptor,但想到了Interceptor,就想到了Filter,于是就想说一下它们的执行顺序 ...

  3. MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解

    逻辑架构   存储引擎 查看当前安装的mysql提供的存储引擎 查看当前mysql默认的存储引擎 MyISAM和InnoDB SQL加载执行顺序 sql书写顺序 mysql解析器执行的顺序  考点:m ...

  4. 转载《mysql 一》:mysql的select查询语句内在逻辑执行顺序

    原文:http://www.jellythink.com/archives/924 我的抱怨 我一个搞应用开发的,非要会数据库,这不是专门的数据库开发人员干的事么?话说,小公司也没有数 据库开发人员这 ...

  5. MySQL中 ORDER BY 与 LIMIT 的执行顺序

    如下: ORDER BY 与 LIMIT 的执行顺序:ORDER BY > LIMIT ORDER BY 与 LIMIT 的编写顺序:ORDER BY > LIMIT 正确写法: sele ...

  6. Mysql补充部分:SQL逻辑查询语句执行顺序

    一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOI ...

  7. 带Left Join的SQL语句的执行顺序

    基础的SQL执行顺序 SQL语句执行的时候是有一定顺序的.理解这个顺序对SQL的使用和学习有很大的帮助. 1.from 先选择一个表,或者说源头,构成一个结果集. 2.where 然后用where对结 ...

  8. MySQL中 order by 与 limit 的执行顺序以及使用实例

    在 MySQL 执行查询的时候,我们可能既要对结果集进行排序又要限制行数,那么此时 order by 与 limit 的执行顺序是怎么样的呢? order by与limit的执行顺序是:先执行orde ...

  9. MySQL left join操作中 on与where放置条件的区别

    优先级 两者放置相同条件,之所以可能会导致结果集不同,就是因为优先级.on的优先级是高于where的. 1 1 首先明确两个概念: LEFT JOIN 关键字会从左表 (table_name1) 那里 ...

随机推荐

  1. gdb tui设置默认窗口高度

    gdb -p 12999 -tui 先显示win信息(输入:info win) 显示如下: SRC (35 lines) <has focus> CMD (17 lines) 我们要改的是 ...

  2. UOJ#400. 【CTSC2018】暴力写挂 边分治 线段树合并

    原文链接 www.cnblogs.com/zhouzhendong/p/UOJ400.html 前言 老年选手没有码力. 题解 先对第一棵树进行边分治,然后,设点 x 到分治中心的距离为 $D[x]$ ...

  3. CLion201914 下载安装

    链接:https://pan.baidu.com/s/12Gzo8gL3iUFoL5wok6L_BQ  密码:7vw4 56ZS5PQ1RF-eyJsaWNlbnNlSWQiOiI1NlpTNVBRM ...

  4. 中山纪中集训Day5叒是测试(划淼)

    A组T1 矩阵游戏(game) 九校联考24OI__D1T1 问题描述 LZK发明一个矩阵游戏,大家一起来玩玩吧,有一个N行M列的矩阵.第一行的数字是1,2,…M,第二行的数字是M+1,M+2…2*M ...

  5. springMvc---WebMvcConfigurationSupport

    该类提供了主要的 MVC 配置方法,通过直接继承 WebMvcConfiguration ,并在继承类上 加上 @EnableWebMvc 和 @Configuration 注解之后.便可以在子类中实 ...

  6. 实现一个自己的IOC

    实现一个自己的IOC package com.IocExample; import java.lang.reflect.Constructor; import java.lang.reflect.In ...

  7. Prometheus基于consul自动发现监控对象 https://www.iloxp.com/archive/11/

      Prometheus 监控目标为什么要自动发现 频繁对Prometheus配置文件进行修改,无疑给运维人员带来很大的负担,还有可能直接变成一个“配置小王子”,即使是配置小王子也会存在人为失误的情况 ...

  8. Centos 安装 nginx 特定版本

    CentOS 6.9/7通过yum安装指定版本的Nginx - EasonJim - 博客园https://www.cnblogs.com/EasonJim/p/9020896.html [root@ ...

  9. 使用TFA启动需要知道哪些概念?

    1. Boot stage BL1,BL2,BL31,BL32,BL33 2. Exception level EL3, EL1S, EL2 3. 那么放在表格里比较一下咯 Boot stage Ex ...

  10. 小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_1、SpringBoot2.x课程介绍和高手系列知识点

    1 ======================1.零基础快速入门SpringBoot2.0 5节课 =========================== 1.SpringBoot2.x课程全套介绍 ...