SQL入门之第十六讲——总结下之前的SQL语句书写顺序
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语句的书写顺序实际上与执行的顺序是不一样的,具体来看:
- FROM :选择from后面跟着的表,产生虚拟表1
- ON:on是join的连接条件,符合连接条件的会被记录在虚拟表2
- JOIN:如果指定了left join的话,会保留表中未匹配的行会作为外部行添加带虚拟表2,产生虚拟表3, 如果有多个join,会重复执行1~3步骤,直到处理完所有
- WHERE:对虚拟表3进行条件筛选过滤,符合条件的记录会被记录到虚拟表4
- GROUP BY:根据grouo by 子句中的列,对虚拟表4中的记录进行分组,产生虚拟表5
- HAVING :对虚拟表5进行条件过滤,符合条件的记录会被插入到虚拟表6中
- SELECT :select 到这一步才执行,选择指定的列,插入到虚拟表7中
- UNION:union连接两个select查询语句,会重复执行1-7步骤,产生两个虚拟表7,union会将这些记录合并到虚拟表8
- ORDER BY:将虚拟表8中的数据,进行排序,产生虚拟表9
- 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语句书写顺序相关推荐
- SQL入门之第十二讲——UNION 联合查询
UNION 联合查询定义: 之前的JOIN连接,是可以对多个表进行横向列的合并,而不能对按行进行纵向合并. UNION操作符,则是可以将多个查询结果,按行进行纵向合并 基本语法: SELECT < ...
- 高等数学学习笔记——第七十六讲——直角坐标系下二重积分的计算
一.问题的引入--如何抛开二重积分的几何意义来计算二重积分? 二.X-型区域上的二重积分计算 1. X-型积分区域及非X-型积分区域的分解 2. 累次积分法 三.Y-型区域上的二重积分计算 1. Y- ...
- 深度学习入门笔记(十六):计算机视觉之边缘检测
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 趣谈网络协议笔记-二(第十六讲上)
趣谈网络协议笔记-二(第十六讲上) 流媒体协议:如何在直播里看到美女帅哥? 自勉 给岁月以文明,而不是给文明以岁月!--<三体> 在触不到的獠牙上点火--就像不必仰望那星星就能够解决--就 ...
- Linux性能优化实战学习笔记:第四十六讲=====实战分析
Linux性能优化实战学习笔记:第四十六讲 一.上节回顾 不知不觉,我们已经学完了整个专栏的四大基础模块,即 CPU.内存.文件系统和磁盘 I/O.以及网络的性能分析和优化.相信你已经掌握了这些基础模 ...
- C#锐利体验 第十六讲 映射
C#锐利体验 南京邮电学院 李建忠(lijianzhong@263.net.cn) 第十六讲 映射 动态类型查询 我们知道,C#编译后的PE文件主要由IL代码和元数据组成,元数据为.NET组件提供了丰 ...
- 第四十六讲 设备驱动kobject
第四十六讲 设备驱动 文章目录 第四十六讲 设备驱动 一.sysfs 1.发展 2.sysfs简介 3.kobject 4.kobj_type 二.设备驱动实验 1.代码 2.Makefile 3.实 ...
- 无人驾驶汽车系统入门(二十六)——基于深度学习的实时激光雷达点云目标检测及ROS实现
无人驾驶汽车系统入门(二十六)--基于深度学习的实时激光雷达点云目标检测及ROS实现 在前两篇文章中,我们使用PCL实现了在点云中对地面的过滤和点云的分割聚类,通常来说,在这两步以后我们将对分割出来的 ...
- (转)tensorflow入门教程(二十六)人脸识别(上)
https://blog.csdn.net/rookie_wei/article/details/81676177 1.概述 查看全文 http://www.taodudu.cc/news/show- ...
最新文章
- python图像中如何显示中文
- CVPR 2022 接收结果出炉!录用 2067 篇,接收数量上升24%(附最新论文速递)
- 用Transformer定义所有ML模型,特斯拉AI总监Karpathy发推感叹AI融合趋势
- Dbml文件提取建表TSql-CodeSmith
- 67. Add Binary
- SQLServer过期的解决方案
- 顺序表中有效元素的长度_408数据结构之顺序表进阶(1)
- 消防信号总线原理_建筑电气消防设计6大常见问题分析
- 数据结构(字典,跳跃表)、使用场景(计数器、缓存、查找表、消息队列、会话缓存、分布式锁)、Redis 与 Memcached、 键的过期时间、数据淘汰策略、持久化(RDB、AOF)
- python discuz搜索api_Python + Bottle + 谷歌搜索Api 实现简单搜索引擎
- 控制文件中的 MAXDATAFILES 参数
- redis维护问题总结
- LInux 下文件包的使用
- python判断语句 if elif else(一分钟读懂)
- VMWare安装苹果Mac OS X
- python学习手册-python学习手册第5版pdf
- StrongShop跨境电商系统源码 | 支持多语言多货币
- C#网易云音乐中需付费歌曲的下载助手。
- dB dBm概念及计算
- 《那封08年收到的情书》
热门文章
- ASO优化之AppStore规则介绍
- 集成讯飞离线语音合成SDK报:“ 未经授权的语音应用.(错误码:11210)“ 问题解决
- 源码阅读之Splitter
- linux无法安装at命令,在Ubuntu/Debian/CentOS/Fedora下安装At及各种At命令的用法
- 8、ARM嵌入式系统:UART初始化
- PA,MIOU,FWIOU
- Android Studio修改安卓模拟器的安装位置和SDK的位置
- JavaScript奇淫技巧:按键精灵
- 1ppi等于多少dpi_图片知多少?
- 小米路由器3无线网连接到服务器,192.168.31.1小米路由器手机登录设置方法