2019独角兽企业重金招聘Python工程师标准>>>

(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>

(8) SELECT

(9) DISTINCT
(10) ORDER BY <order_by_list>

(11) <TOP/Limit_specification> <select_list>

每个步骤产生一个虚拟表(Virtual Table,简称 VT),该虚拟表被用作下一个步骤的输入。只有最后一步生成的表返回给调用者。如果没有某一子句,则跳过相应的步骤。

1. FROM:对FROM子句中的前两个表执行笛卡尔积,生成虚拟表VT1。
2. ON:对VT1应用ON筛选器。只有那些使<join_condition>为真的行才被插入VT2。
3. INNTER/OUTER(JOIN):如果指定了INNTER/OUTER JOIN,保留表中未找到匹配的行将作为外部行添加到VT2,生成VT3。
如果FROM子句包含两个以上的表,则对上一个联接生成的结果表和下一个表重复执行步骤1到步骤3,直到
处理完所有的表为止。
4. 对VT3应用WHERE筛选器。只有使<where_condition>为TRUE的行才被插入VT4。
5. GROUP BY:按GROUP BY 子句中的列列表对VT4中的行分组,生成VT5。
6. CUBE|ROLLUP:把超组插入VT5,生成VT6。
7. HAVING:对VT6应用HAVING筛选器。只有使<having_condition>为TRUE的组才会被插入VT7。
8. SELECT:处理SELECT列表,产生VT8。
9. DISTINCT:将重复的行从VT8中移除,产生VT9。
10. ORDER BY:将VT9中的行按ORDER BY子句中的列列表排序,生成一个有表(VC10)。
11. TOP/Limit:从VC10的开始处选择指定数量的行,生成表VT11,并返回给调用者(注: Mysql从5.0开始后就不支持TOP语句)

附一张innerJoin和OuterJoin图

转载于:https://my.oschina.net/u/3412738/blog/1526054

mysql数据库SELECT语句执行步骤相关推荐

  1. Mysql数据库Sql语句执行效率-Explain

    为什么80%的码农都做不了架构师?>>>    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语 ...

  2. mySQL数据库Sql语句执行效率检查--Explain命令

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...

  3. MySQL数据库select语句6大子句(from、where、group by、having、order by 、limit )#经典员工、部门表案例语句练手!

       MySQL中的select语句,有说5大子句,有说6大子句的,两者都没有问题,只不过把from接表名算上一个子句,where是条件查询,group by是分组查询,having是筛选,order ...

  4. mysql数据库select语句用法_mysql学习笔记之完整的select语句用法实例详解

    本文实例讲述了mysql学习笔记之完整的select语句用法.分享给大家供大家参考,具体如下: 本文内容: 完整语法 去重选项 字段别名 数据源 where group by having order ...

  5. MySQL数据库SQL语句执行顺序

    MySQL语句执行顺序:FROM > 表链接(inner join.left join.right join) > WHERE >group by 进行分组 > having过 ...

  6. MySQL数据库select语句的使用方法

    select语句可 以用回车分隔 $sql="select * from article where id=1"和 $sql="select * from article ...

  7. mysql数据库select语句用法_mysql数据库select查询语句简单用法

    mysql select简单用法 1.select语句可以用回车分隔$sql="select * from article where id=1"和$sql="selec ...

  8. c# mysql executescalar_C# 操作MySQL数据库, ExecuteScalar()方法执行T-SQL语句, COUNT(*), 统计数据...

    C# 操作My SQL数据库需要引用"MySql.Data", 可通过两种方式获取. 1.从NuGet下载"Install-Package MySql.Data -Ver ...

  9. executescalar mysql_C# 操作MySQL数据库, ExecuteScalar()方法执行T-SQL语句, COUNT(*), 统计数据...

    C# 操作My SQL数据库需要引用"MySql.Data", 可通过两种方式获取. 1.从NuGet下载"Install-Package MySql.Data -Ver ...

最新文章

  1. 针对JavaScript的常用事件、对象捕获和使用技巧
  2. 将Eclipse代码导入到AndroidStudio的两种方式
  3. Android LruCache 压缩图片 有效避免程序OOM
  4. 画火柴人动画的手机软件_王者荣耀 玩家画的火柴人造型的英雄 图五的英雄你能猜出是谁吗...
  5. SSD+HDD双硬盘+MSI主板win8.1+ubuntu17.04双系统安装总结
  6. JS与flash交互通信控制的方法
  7. 大数据技术之Stome 概念
  8. 07、08 条件渲染、列表渲染
  9. Microsoft Visual Studio 文件识别及其用途简述
  10. Leetcode每日一题:175.组合两个表
  11. [仁润云技术团队]并发编程-(1)基本概念
  12. php屏蔽ip时间段,php中限制ip段访问、禁止ip提交表单的代码分享/用PHP打印出前一天的时间格式:...
  13. 汉生机器人_2019高工机器人核心零部件会议
  14. 弥散张量分析开源软件 DSI Studio 简体中文汉化版可以下载了
  15. php怎么初始化融云sdk,初始化融云 SDK
  16. 参考文献在论文中进行引用标注
  17. 创业维艰:为啥大多数创业者都不开心?
  18. 算法题 吹气球 javascript
  19. 浙江高职考计算机专业本科,浙江高职自主招生考什么科目
  20. 如何搭建一个自己的私有云盘

热门文章

  1. Java异常处理和设计
  2. 【LSH源码分析】p稳定分布LSH算法
  3. OpenCV3如何使用SIFT和SURF Where did SIFT and SURF go in OpenCV 3?
  4. 斯坦福大学深度学习与自然语言处理第三讲:高级的词向量表示
  5. Stanford UFLDL教程 数据预处理
  6. 图文并茂详解iptables 防火墙工作原理及知识点
  7. 团队项目个人进展——Day08
  8. [老老实实学WCF] 第七篇 会话
  9. Monkey基本用法与常用参数
  10. Exchange2007 系列一:Exchange2007安装