SQL语句的书写顺序与执行顺序不是一致的

1、SQL语句的书写顺序

  • 语句的书写顺序是比较重要的,如果顺序不对去执行也是会报错的。
  • 之前的SELECT、WHERE、ORDER BY、LIMIT、JOIN、UNION、GROUP BY、HAVING等语法,如果这些语句在SQL中同时存在,那书写顺序就非常重要了。

基本语法:

SELECT <字段名>
FROM <表名a>
JOIN <表名b>
ON <a.字段名 = b.字段名>
WHERE <筛选条件>
GROUP BY <字段名>
HAVING <筛选条件>
UNION
ORDER BY <字段名>
LIMIT <限制行数>;

看着会比较复杂,不需要特意去背,多做题自然而然就熟悉了。

2、SQL语句的执行顺序

SQL语句的书写顺序实际上与执行的顺序是不一样的,具体来看:

  1. FROM :选择from后面跟着的表,产生虚拟表1
  2. ON:on是join的连接条件,符合连接条件的会被记录在虚拟表2
  3. JOIN:如果指定了left join的话,会保留表中未匹配的行会作为外部行添加带虚拟表2,产生虚拟表3, 如果有多个join,会重复执行1~3步骤,直到处理完所有
  4. WHERE:对虚拟表3进行条件筛选过滤,符合条件的记录会被记录到虚拟表4
  5. GROUP BY:根据grouo by 子句中的列,对虚拟表4中的记录进行分组,产生虚拟表5
  6. HAVING :对虚拟表5进行条件过滤,符合条件的记录会被插入到虚拟表6中
  7. SELECT :select 到这一步才执行,选择指定的列,插入到虚拟表7中
  8. UNION:union连接两个select查询语句,会重复执行1-7步骤,产生两个虚拟表7,union会将这些记录合并到虚拟表8
  9. ORDER BY:将虚拟表8中的数据,进行排序,产生虚拟表9
  10. LIMIT :从虚拟表9中 取出指定行的记录,返回到结果集

3、总结的顺序

  • 书写顺序:SELECT > FROM > JOIN > ON > WHERE > GROUP BY > HAVING > UNION > ORDER BY > LIMIT >;

  • 执行顺序:FROM > ON > JOIN > WHERE > GROUP BY > HAVING > SELECT > UNION > ORDER BY > LIMIT >;

需要注意的地方:
无论是执行顺序还是书写顺序,UNION都是在 ORDER BY 前面,SQL语句会把所有UNION合并后,在进行排序。

SQL入门之第十六讲——总结下之前的SQL语句书写顺序相关推荐

  1. SQL入门之第十二讲——UNION 联合查询

    UNION 联合查询定义: 之前的JOIN连接,是可以对多个表进行横向列的合并,而不能对按行进行纵向合并. UNION操作符,则是可以将多个查询结果,按行进行纵向合并 基本语法: SELECT < ...

  2. 高等数学学习笔记——第七十六讲——直角坐标系下二重积分的计算

    一.问题的引入--如何抛开二重积分的几何意义来计算二重积分? 二.X-型区域上的二重积分计算 1. X-型积分区域及非X-型积分区域的分解 2. 累次积分法 三.Y-型区域上的二重积分计算 1. Y- ...

  3. 深度学习入门笔记(十六):计算机视觉之边缘检测

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  4. 趣谈网络协议笔记-二(第十六讲上)

    趣谈网络协议笔记-二(第十六讲上) 流媒体协议:如何在直播里看到美女帅哥? 自勉 给岁月以文明,而不是给文明以岁月!--<三体> 在触不到的獠牙上点火--就像不必仰望那星星就能够解决--就 ...

  5. Linux性能优化实战学习笔记:第四十六讲=====实战分析

    Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...

  6. C#锐利体验 第十六讲 映射

    C#锐利体验 南京邮电学院 李建忠(lijianzhong@263.net.cn) 第十六讲 映射 动态类型查询 我们知道,C#编译后的PE文件主要由IL代码和元数据组成,元数据为.NET组件提供了丰 ...

  7. 第四十六讲 设备驱动kobject

    第四十六讲 设备驱动 文章目录 第四十六讲 设备驱动 一.sysfs 1.发展 2.sysfs简介 3.kobject 4.kobj_type 二.设备驱动实验 1.代码 2.Makefile 3.实 ...

  8. 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现

    无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...

  9. (转)tensorflow入门教程(二十六)人脸识别(上)

    https://blog.csdn.net/rookie_wei/article/details/81676177 1.概述 查看全文 http://www.taodudu.cc/news/show- ...

最新文章

  1. python图像中如何显示中文
  2. CVPR 2022 接收结果出炉!录用 2067 篇,接收数量上升24%(附最新论文速递)
  3. 用Transformer定义所有ML模型,特斯拉AI总监Karpathy发推感叹AI融合趋势
  4. Dbml文件提取建表TSql-CodeSmith
  5. 67. Add Binary
  6. SQLServer过期的解决方案
  7. 顺序表中有效元素的长度_408数据结构之顺序表进阶(1)
  8. 消防信号总线原理_建筑电气消防设计6大常见问题分析
  9. 数据结构(字典,跳跃表)、使用场景(计数器、缓存、查找表、消息队列、会话缓存、分布式锁)、Redis 与 Memcached、 键的过期时间、数据淘汰策略、持久化(RDB、AOF)
  10. python discuz搜索api_Python + Bottle + 谷歌搜索Api 实现简单搜索引擎
  11. 控制文件中的 MAXDATAFILES 参数
  12. redis维护问题总结
  13. LInux 下文件包的使用
  14. python判断语句 if elif else(一分钟读懂)
  15. VMWare安装苹果Mac OS X
  16. python学习手册-python学习手册第5版pdf
  17. StrongShop跨境电商系统源码 | 支持多语言多货币
  18. C#网易云音乐中需付费歌曲的下载助手。
  19. dB dBm概念及计算
  20. 《那封08年收到的情书》

热门文章

  1. ASO优化之AppStore规则介绍
  2. 集成讯飞离线语音合成SDK报:“ 未经授权的语音应用.(错误码:11210)“ 问题解决
  3. 源码阅读之Splitter
  4. linux无法安装at命令,在Ubuntu/Debian/CentOS/Fedora下安装At及各种At命令的用法
  5. 8、ARM嵌入式系统:UART初始化
  6. PA,MIOU,FWIOU
  7. Android Studio修改安卓模拟器的安装位置和SDK的位置
  8. JavaScript奇淫技巧:按键精灵
  9. 1ppi等于多少dpi_图片知多少?
  10. 小米路由器3无线网连接到服务器,192.168.31.1小米路由器手机登录设置方法