SQL语句执行顺序

为什么要了解SQL?

  1. Ans1: 动态网页靠的是什么, 是数据库中的数据啊. 只有精通数据库才有可能称为开发大佬.
  2. Ans2: SQL就是操作数据库的标准语句, 所以玩转SQL是重要的前提. 别说啦, 赶紧把下面的内容拿走.

SQL执行说明

  1. 首先摘抄一段特别经典的SQL语句.

    (1) SELECT (2)DISTINCT<select_list>
    (3) FROM <left_table>
    (4) <join type> JOIN <right_table>
    (5)         ON <join_condition>
    (6) WHERE <where_condition>
    (7) GROUP BY <group_by_list>
    (8) WITH {CUBE|ROLLUP}
    (9) HAVING <having_condition>
    (10) ORDER BY <order_by_condition>
    (11) LIMIT <limit_number>
    
  2. 执行顺序分析,排序靠前的最先执行 :

    1. FROM : 首先左边的表<left_table>和右边的表<right_table>先进行笛卡尔运算 .举个栗子:<left_table>中有m条记录,<right_table>中有n条记录,那么会产生一个m*n个的虚拟表VT1(virtual table);
    2. ON : 符合连接条件<join_condition>的记录会被保留下来,我们暂且称之为VT2;
    3. JOIN : 如果指定了连接类型(左连接,右连接),那么保留表中未匹配的记录作为外部行添加到虚拟表VT2,形成VT3;
    4. WHERE : 对虚拟表VT3进行条件过滤,记录满足条件<where_condition>才会执行下一步,此时的虚拟表称它为VT4;
    5. GROUP BY : 对VT4按照GROUP BY的列进行分组,形成VT5;
    6. WITH : 对VT5进行CUBE或ROLLUP操作,产生表VT6;
    7. HAVING : 对虚拟表VT6应用HAVING过滤器,只有符合<having_condition>的记录才会被插入到VT7;
    8. SELECT : 执行SELECT操作,选择指定的列,形成VT8;
    9. DISTINCT: 去除重复,产生虚拟表VT9;
    10. ORDER BY: 将虚拟表VT9中的记录按照排序字段<order_by_list>进行排序操作,产生虚拟表VT10;
    11. LIMIT: 取出指定行的记录,产生虚拟表VT11,并返回给查询用户.
  3. 补充 :

    1. 如果查询表的数量超过两个,那么可以把得到的VT3表当成已知表和下一个表重复步骤1-3,最后形成一个新的NVT3,接着进行操作;
    2. WITH : 中{CUBE|ROLLUP} : 通常和group by 语句一起使用,是根据维度在分组的结果集中进行聚合操作。——对group by的分组进行汇总。其和Order By互斥.

数据库SQL执行顺序详解相关推荐

  1. MySQL系列---架构与SQL执行流程详解

    文章目录 1. 背景 2. 架构体系 2.1 架构图 2.2 模块详解 2.3 架构分层 3. 查询SQL语句执行流程 3.1 连接 3.1.1 MySQL支持的通信协议 3.1.2 通信方式 3.2 ...

  2. unity 继承会调用start吗_Unity 继承MonoBehaviour脚本 执行顺序 详解

    先看结果 Awake ->OnEnable-> Start ->-> FixedUpdate-> Update  -> LateUpdate ->OnGUI ...

  3. MySQL--SQL执行顺序详解

    SQL执行顺序 (8)SELECT(9)DISTINCT <select_list> (1)FROM <left_table> (3)<join_type> JOI ...

  4. mysql的sql执行计划详解

    使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...

  5. 随笔:数据库SQL执行顺序

    2021年11月20日  周六    写于 上海 和平公园 刚刚还小激动了一下,看到消息上有一个关注,赶紧翻看了一下,才发现还是2019年的一位朋友的关注,顿时归于平静.如果有人关注我,我还是愿意写一 ...

  6. 【异步系列二】Promise原理及执行顺序详解

    前言 Promise 是 javascript 中非常重要的一环,熟悉它是必须的,而且在面试中也常常会问到相关面试题. 在了解 Promise 之前,需要了解什么是异步编程,可以参考我的一篇文章:Ja ...

  7. 数据库SQL执行顺序

    数据库中SQL的执行顺序如下: (8)SELECT (9)DISTINCT  (11)<Top Num> <select list> (1)FROM [left_table] ...

  8. java try、catch、finally及finally执行顺序详解

    1.为什么要用finally 先看一个没有finally的异常处理try-catch语句: 假设count为要使用到的资源,并且用完要求释放此资源.那么我们可以把释放资源的语句放到try-catch后 ...

  9. Python装饰器执行顺序详解

    探究多个装饰器执行顺序 装饰器是Python用于封装函数或代码的工具,网上可以搜到很多文章可以学习,我在这里要讨论的是多个装饰器执行顺序的一个迷思. 疑问 大部分涉及多个装饰器装饰的函数调用顺序时都会 ...

最新文章

  1. Spring面试五连问,这怎么顶啊
  2. matlab 数组元素连乘积prod
  3. Labview 属性节点讲解
  4. JQUERY项目所用插件
  5. leetcode 316. 去除重复字母(单调栈)
  6. libpcap 库使用(二)
  7. 曾遭周鸿祎全网封杀的 360 猛将 :草根打工到 36 岁身家上亿的逆袭!
  8. 【给你几个使用Xamarin的理由】
  9. File Manager所支持的文件
  10. 职高计算机基础知识大全,职高计算机基本教学大纲.doc
  11. C语言从字符串中提取数字
  12. 【科创人独家】华旦天使张洁:风口是创业者的造物,投资本质是件农活
  13. [原创] 仿滴滴出行打车APP定位导航,增加RFID认证、海外版、司机证件号码识别功能
  14. 行走在思想的边上――武墩支教十二月(上)
  15. 黑色温敏性PNIPAM-AuNPs/CHOL-AuNPs纳米金粒修饰聚合物的制备过程
  16. 零基础 学 python开发 (Genius套餐A) 四十一
  17. php和html的关系
  18. GO富集分析相关概念
  19. 百度ECharts插件 立体地图阴影实现带轨迹连接
  20. mysql不可重复读是锁的表吗_Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)...

热门文章

  1. java日期工具类(转载)
  2. skr!skr!能视频通话的360儿童手表,原来是这样实现的!
  3. android兼容huawei手机刘海屏解决方案
  4. 树莓派安装 vscode
  5. 用快捷键强制关闭Ubuntu无响应程序
  6. FFT-trick及Culey-Tukey蝴蝶变换原理及实现
  7. 文本文件自动计算生成srt字幕格式的文件
  8. 手把手教你移植FreeModbus到STM32【看评论区引导,领取全套资料包】
  9. 用python将一个excel工作表根据条件拆分成多个工作表(只用openpyxl库)
  10. 干洗店小程序做一个预约小程序有什么优点