关于sql语句执行顺序

基于STM32的Modbus TCP多主站数据监测 Modbus TCP通信协议在STM32上实现,STM32作为服务器采集内部传感器数据,并通过ADC进行转换,存入寄存器。两个PC机作为客户端访问服务器,服务器通过Socket通信实现监听连接,将数据发送给客户端。 阅读详情

一、sql执行顺序 
(1)from 
(3) join 
(2) on 
(4) where 
(5)group by(开始使用select中的别名,后面的语句中都可以使用)
(6) avg,sum.... 
(7)having 
(8) select 
(9) distinct 
(10) order by 

从这个顺序中我们不难发现,所有的 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。 
第一步:首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表 vt1(选择相对小的表做基础表) 
第二步:接下来便是应用on筛选器,on 中的逻辑表达式将应用到 vt1 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表 vt2 
第三步:如果是outer join 那么这一步就将添加外部行,left outer jion 就把左表在第二步中过滤的添加进来,如果是right outer join 那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 vt3 

第四步:如果 from 子句中的表数目多余两个表,那么就将vt3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 vt3。 

第五步:应用where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表vt4,在这有个比较重要的细节不得不说一下,对于包含outer join子句的查询,就有一个让人感到困惑的问题,到底在on筛选器还是用where筛选器指定逻辑表达式呢?on和where的最大区别在于,如果在on应用逻辑表达式那么在第三步outer join中还可以把移除的行再次添加回来,而where的移除的最终的。举个简单的例子,有一个学生表(班级,姓名)和一个成绩表(姓名,成绩),我现在需要返回一个x班级的全体同学的成绩,但是这个班级有几个学生缺考,也就是说在成绩表中没有记录。为了得到我们预期的结果我们就需要在on子句指定学生和成绩表的关系(学生.姓名=成绩.姓名)那么我们是否发现在执行第二步的时候,对于没有参加考试的学生记录就不会出现在vt2中,因为他们被on的逻辑表达式过滤掉了,但是我们用left outer join就可以把左表(学生)中没有参加考试的学生找回来,因为我们想返回的是x班级的所有学生,如果在on中应用学生.班级='x'的话,left outer join会把x班级的所有学生记录找回(感谢网友康钦谋__康钦苗的指正),所以只能在where筛选器中应用学生.班级='x' 因为它的过滤是最终的。 

第六步:group by 子句将中的唯一的值组合成为一组,得到虚拟表vt5。如果应用了group by,那么后面的所有步骤都只能得到的vt5的列或者是聚合函数(count、sum、avg等)。原因在于最终的结果集中只为每个组包含一行。这一点请牢记。 

第七步:应用cube或者rollup选项,为vt5生成超组,生成vt6. 
第八步:应用having筛选器,生成vt7。having筛选器是第一个也是为唯一一个应用到已分组数据的筛选器。 
第九步:处理select子句。将vt7中的在select中出现的列筛选出来。生成vt8. 

第十步:应用distinct子句,vt8中移除相同的行,生成vt9。事实上如果应用了group by子句那么distinct是多余的,原因同样在于,分组的时候是将列中唯一的值分成一组,同时只为每一组返回一行记录,那么所以的记录都将是不相同的。 

第十一步:应用order by子句。按照order_by_condition排序vt9,此时返回的一个游标,而不是虚拟表。sql是基于集合的理论的,集合不会预先对他的行排序,它只是成员的逻辑集合,成员的顺序是无关紧要的。对表进行排序的查询可以返回一个对象,这个对象包含特定的物理顺序的逻辑组织。这个对象就叫游标。正因为返回值是游标,那么使用order by 子句查询不能应用于表表达式。排序是很需要成本的,除非你必须要排序,否则最好不要指定order by,最后,在这一步中是第一个也是唯一一个可以使用select列表中别名的步骤。 

第十二步:应用top选项。此时才返回结果给请求者即用户。 
VSCODE 安装LATEX环境,参数配置,常见问题解决 1 准备Texlive安装包 可以从以下网址下载 texlive 的镜像文件: 华为镜像 阿里镜像 官网 网址中大概文件构成 下载完后我们需要的文件构成(我是2020年下载过了,这次就不重新下载了) 将这个镜像文件进行解压 2 安装Texlive 右键install-tl-windows.bat,单击以管理员身份运行,进入安装界面. 点击左下角的“Advanced”进入高级安装来取消你不需要安装的宏包。 点击“Customize”来取消勾选不需要的宏包。 单是把非中英的语言包取消勾选可以省掉 1G 阅读详情

相关推荐

2021秋-北邮计算机导论期末考试(BUPT)

2021秋-北邮计算机导论期末考试(BUPT) 难度较低适合新手练习

weixin_73985779的博客 1492

SQL 执行顺序

在查询中逻辑查询和物理查询有着本质的区别,SQL不同于其它编程的最明显的特征就是处理代码的顺序,虽然总是最先写SELECT 但是几乎总在最后执行,那到底是怎么一个执行顺序呢 如下的sql查询语句执行顺序 (1)from (3) join (2) on (4) where (5)group by (6) with (7)having (8) select (9) dist...

greatwqs : Where amazing happens ... 285

LCD、LED、OLED、Mini LED、Micro LED、全阵列LED、QLED、QD-OLED、QNED、AMOLED是什么意思?

LCD(液晶显示器,Liquid Crystal Display)定义:LCD 是一种利用液晶材料控制光线通过的显示技术,需依靠背光源(如冷阴极荧光灯 CCFL 或 LED)照亮液晶层以形成图像。技术原理:液晶分子在电场作用下改变排列,控制背光通过的强度和颜色。液晶本身不发光,需外部光源。特点:结构包括背光层、液晶层、彩色滤光片和偏光片。响应时间较慢,黑色表现因背光漏光而偏灰。LED(发光二极管显示,Light Emitting Diode)定义。

中国最威武的城市!武功军威-武威,铁骨铮铮! 3422

总结:Prometheus之PromQL操作符

总结:Prometheus之PromQL操作符

w2009211777的专栏 4617

攻防世界 misc题GFSJ1129-【您看我还有机会吗?】

我们发现了隐藏内容,一开始我以为那个英文就是flag,提交后发现不对,然后我想只有一张图片然后图片上的隐写内容又不是flag,那必定还有什么文件被隐藏了,于是我们打开VMware并启动Ubuntu,使用binwalk分析一下有没有隐藏文件,我们要在Terminal中分析,如下。我们发现里面有一个flag.txt文件,我们尝试提取里面内容,但发现又要密码,我们想起了之前图片上的隐藏内容,我们将那段英文输入(包括空格和符号,在VMware中输入密码不会有显示,你看到的就像没输入一样),然后我们看到如下。

大数据专业,关注 AI 安全与数学建模。记录 Web 安全、对抗攻击、隐私保护等安全实践,以及从经典模型到智能方法的建模思考。用数学思维理解 AI,用 AI 方法反哺安全与建模。 1091

使用 Claude Skills 构建专业级 AI Agent:技术实践指南

Claude Skills(也称)是一组基于文件系统的可重用资源包,为 Claude 提供特定领域的专业知识、标准化工作流程和最佳实践。与传统一次性 Prompt 不同,Skills 是持久化、自动触发、支持代码执行的智能模块。让 AI 真正理解并执行你的工作方式。Claude Skills 正在重新定义 AI 助手的边界——从“回答问题”升级为“执行专业工作的能力”。其可组合、可移植、高效、强大的特性,使其成为自动化重复任务、标准化工作流、提升团队效率的理想工具。未来已来。

weixin_44058951的博客 2226

【进阶篇】MySQL的SQL解析原理详解

你是否已经深入了解了MySQL中 SQL解析过程,以及解析过程中每个环节扮演的具体角色?你是否好奇MySQL是如何将一条SQL语句解析成一系列的"Item"和"TABLE_LIST" 最终通过 这些完成指令的执行和结果的反馈你是否清楚在查询优化和执行阶段MySQL进行了哪些处理的?那么,让我们一起深入了解一下MySQL的SQL解析原理吧。本文参考了美团技术团队的《SQL解析在美团的应用》

日拱一卒无有尽,功不唐捐终入海 3510

JS+H5打字练习器

实现功能 1.导入.TXT文件到打字练习内容(部分浏览器可能出于安全问题限制了这一步操作) 2.输入文本到打字练习内(弹出输入框,将要练习的内容输入至输入框) 3. 开始练习,并根据正误在打字练习内容文本上修改颜色(某个字正确显示绿色,某个字错误,显示红色,某个字没有打显示灰色) 4.开始练习、结束练习,全部输入完成后自动结束练习,也可提前手动结束练习,结束练习后弹窗用显示时和正确率。(区别在于一个全部输入完成且全部正确,一个提前结束无其他条件) 效果图 分析 HTML 结构解析 根元素:<!DO

w11111xxxl的博客 1413

MySQL 的Sql脚本是如何被编译的

MySQL是一个关系型数据库管理系统(RDBMS),它使用SQL(Structured Query Language,结构化查询语言)作为其主要的查询语言。在MySQL中运行一个SQL脚本时,MySQL实际上并不会像传统的编程语言那样将SQL脚本编译成机器代码。所以,MySQL并不会将SQL脚本编译成机器代码,而是通过一系列的分析和优化步骤来执行SQL脚本。这种方式也使MySQL能够适应各种不同的查询和数据,提供灵活而高效的查询处理。

科技向善 844

15 君正IPC库开发总结

在前面的章节中,我们介绍了君正ISP、视频采集、音频采集、音频播放、云台电机、移动侦测算法、人形侦测算法、移动跟踪算法等的封装。那么,应用层如何使用这些封装好的接口呢?根据设计模式中的依赖倒置原则:高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象。因此,应用层应当只能感知到我们封装的接口类,而不应当感知到其对应的具体实现类。

hope_wisdom的技术博客 1660

Java调用YOLOv26全解析:从ONNX模型部署到工业质检实战

本文分享了工业自动化领域使用Java调用YOLOv26进行零件缺陷检测的完整方案。通过YOLOv26s模型结合ONNX Runtime Java部署,误检率和漏检率显著降低(分别从12%降至2.1%,8%降至0.8%)。文章详细介绍了方案选型理由、环境配置避坑指南、ONNX模型导出步骤,以及Maven依赖配置(分CPU/GPU版本)。该方案直接在上位机Java环境中运行,避免了跨语言调用损耗,适合工业质检场景部署,提供了可复用的性能优化和多线程推理实现。

2601_94871597的博客 1105

深入理解 SQL 语句执行顺序:从原理到实战

摘要: SQL查询的书写顺序(如SELECT-FROM-WHERE)与其实际执行顺序存在显著差异,理解这一顺序是优化查询性能和避免逻辑错误的关键。SQL标准执行顺序为:FROM(确定数据源)→ JOIN/ON(连接表)→ WHERE(行过滤)→ GROUP BY(分组)→ 聚合函数 → HAVING(组过滤)→ SELECT(选择列)→ DISTINCT(去重)→ ORDER BY(排序)→ LIMIT(分页)。关键点包括:WHERE不能使用聚合函数(需用HAVING)、JOIN条件(ON)与WHERE过滤

ywl470812087的博客 2937

【异常】API 速率限制报错问题全流程排查与解决指南 API rate limit reached. Please try again later.

摘要: 本文针对大模型API开发中常见的速率限制报错("API rate limit reached")提供全流程解决方案。首先解析该报错的本质是服务端对高频调用的保护机制,通过三步排查法确认根因:客户端请求频率超出账户阈值。提出三级解决方案:1)临时等待限流周期重置;2)升级付费账户提高调用配额;3)构建多模型容灾架构实现自动切换。建议生产环境优先采用容灾方案,通过备用API节点保障业务连续性,同时平衡不同模型服务的成本与性能。

奶爸的编程之路,也就一周冷个三天 1418

sql语句执行顺序

sql语句定义和执行顺序 摘自《MySQL技术内幕:SQL编程》 sql语句定义的顺序 (1) SELECT (2)DISTINCT<select_list> (3) FROM <left_table> (4) <join_type> JOIN <right_table> (5) ON <join_condition> (...

面朝大海,春暖花开 3万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SQL语句执行顺序是什么?

一起来看看MySQL 执行一条SQL语句都是什么样的顺序,都会经过哪些流程?

zwz1342的博客 1724

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SQL语句执行顺序

查询语句中select from where group by having order by的执行顺序 1.查询中用到的关键词主要包含六个,并且他们的顺序依次为 select--from--where--group by--having--order by 其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并...

weixin_30402343的博客 1940

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MySQL 的 SQL 语句执行顺序

MySQL 的 SQL 语句执行顺序并不完全按照代码的书写顺序执行,而是遵循一套固定的逻辑流程

嗨,来了,累了把,歇息一下,暂时放下一切的纷纷扰扰,享受一份自己独处的时光 1976

SQL语句的执行顺序

SQL语句执行顺序 查询语句中select from where group by having order by的执行顺序   1.查询中用到的关键词主要包含六个,并且他们的顺序依次为  select--from--where--group by--having--order by    其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序  与sql语句的书写顺序...

javaprogramme的博客 3307

SQL语句的执行顺序,你真的懂吗?

一文带你理解SQL语句的执行顺序,通俗易懂!🎉

qq_56158663的博客 2801

sql语句的执行顺序

理解sql语句的执行顺序对优化sql非常重要,那么sql语句的执行顺序是怎样的呢,以一条简单的的语句做分析:          这一条语句包含我们经常用到的一些关键字,select,from,where,group by,order by,它的执行顺序如下: 先执行from关键字后面的语句,明确数据的来源,它是从哪张表取来的。 接着执行where关键字后面的语句,对数据进行筛选。 再接

海阔天空 3万+

MYSQL的SQL语句执行顺序

MySQL 的并不完全按照代码的书写,而是遵循一套固定的逻辑流程:确定查询的数据来源,包括表和它们的连接方式(如INNER JOINLEFT JOIN等)。先执行FROM,确定基础表。再执行JOIN,将多个表按条件连接,生成临时结果集(中间表):对FROMJOIN生成的中间表进行过滤,筛选符合条件的行。:因为此时SELECT尚未执行。:尽早减少后续处理的数据量。:将数据按指定列分组,通常与聚合函数(如SUMCOUNT)配合使用。分组后,每组生成一行汇总结果。可以使用多列分组。:对GROUP BY。

2502_91375957的博客 1874

SQL Server 中SQL语句执行顺序

SQL Server 中SQL语句执行顺序

lengxuan001的博客 3786

SQL查询语句的执行顺序

SQL查询的实际执行顺序与书写顺序不同:1) 首先执行FROM/JOIN确定数据源;2) WHERE进行行过滤;3) GROUP BY分组;4) HAVING过滤组;5) SELECT选择列和计算表达式;6) DISTINCT去重;7) ORDER BY排序;8) LIMIT限制行数。关键区别在于WHERE在分组前执行不能使用聚合函数,而HAVING可以;ORDER BY可使用SELECT定义的别名。理解执行顺序有助于编写正确高效的SQL查询。

Waitind_的博客 1289

sql 执行顺序_Sql语句执行顺序,你理解了吗

1.序言记得前几年,还是初级的时候,面试官问到,请你讲一下sql语句的执行顺序。当时我以为就是按照sql的关键字排列顺序来执行的。当时说完,面试官心里估计已经直接pass我了吧。今天复习的时候,突然想起这个基础知识点,所以有时间就来发表一下了。山东掌趣网络科技​2.sql语句的执行顺序2.1 为什么要了解sql语句执行顺序了解一个sql语句的执行顺序,可以让我们清楚到sql执行时的操作顺序,进而有...

weixin_39608559的博客 472
上一篇: 使用 Merge 语句实现表数据之间的对比同步
下一篇: 关于C++ 里struct 和 class的区别
imJaron
博客等级 码龄11年 121粉丝 286原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值