MySQL的语句执行顺序

Mysql 语句执行顺序 纸上得来终觉浅 1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西?  在开发中涉及到数据库,基本上只用到了sql语句,如何写sql以及对其进行优化就比较重要,那些mysql的厚本书籍针对的是DBA,我们只需要学习其中的sql就可以了。 2.既然会写sql是目标,那么怎么才能写好sql.学习下面几点: 1)Mysql的执行顺序,这个是写sql的核心,之前遇到的一些错误就是因为对其不了 阅读详情

MySQL的语句执行顺序

MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。

下面我们来具体分析一下查询处理的每一个阶段


  1. FORM: 对FROM的左边的表和右边的表计算笛卡尔积。产生虚表VT1
  2. ON: 对虚表VT1进行ON筛选,只有那些符合<join-condition>的行才会被记录在虚表VT2中。
  3. JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3, rug from子句中包含两个以上的表的话,那么就会对上一个join连接产生的结果VT3和下一个表重复执行步骤1~3这三个步骤,一直到处理完所有的表为止。
  4. WHERE: 对虚拟表VT3进行WHERE条件过滤。只有符合<where-condition>的记录才会被插入到虚拟表VT4中。
  5. GROUP BY: 根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5.
  6. CUBE | ROLLUP: 对表VT5进行cube或者rollup操作,产生表VT6.
  7. HAVING: 对虚拟表VT6应用having过滤,只有符合<having-condition>的记录才会被 插入到虚拟表VT7中。
  8. SELECT: 执行select操作,选择指定的列,插入到虚拟表VT8中。
  9. DISTINCT: 对VT8中的记录进行去重。产生虚拟表VT9.
  10. ORDER BY: 将虚拟表VT9中的记录按照<order_by_list>进行排序操作,产生虚拟表VT10.
  11. LIMIT:取出指定行的记录,产生虚拟表VT11, 并将结果返回。

以上都是常规查询sql顺序,也有例外。
对于having,有以下sql:
select id,id+2 as calculate FROM position_test WHERE id>1 HAVING calculate=4;

显然,select的查询变量如果是新的,在where条件里不可引用,而having可以。说明顺序是这样的,where select having

MySQL查询语句中关键字的执行顺序 了解MySQL查询语句关键字的执行顺序对于理清业务逻辑非常重要,因此本文将探讨MySQL查询语句中各关键字的执行顺序。 阅读详情

相关推荐

阿里巴巴达摩院人工智能训练师(高级)

阿里巴巴达摩院人工智能训练师(高级)

huang0612123的博客 1万+

最常用MySQL语句的写法

最近项目上要测试统计类的功能,用到较多的sql查询语句,熟练使用SQL语句,能够提高我们在测试中的工作效率,特别是针对统计图表类的功能,在版本迭代以后,回归该模块的功能,能够很快的知道是否统计正确。 一、删除表或清空表数据 1、删除表数据+表结构(慎用) 语法:drop table 表名称; 使用场景:不需要该表时,删除多余表或重复的表。(慎用,一般不删表,只清表数据) 例子:DROP TABLE biz_time_table; 2、清空表内的数据 语法1:truncat...

Cora_sasa的博客 8293

别再乱提MR了!手把手教你配置GitLab的CI/CD与分支保护规则,让团队协作更丝滑

本文详细介绍了如何配置GitLab的CI/CD与分支保护规则,以优化团队协作流程。通过设置Protected Branches、MR流水线检查和自动化审批规则,有效防止不规范操作和合并冲突,提升开发效率与代码质量。特别强调MR(Merge Request)的正确使用,确保团队协作更丝滑。

weixin_28840591的博客 235

sql语句执行顺序

sql的执行顺序(重点中的重点,实践知真知) (1)from (2) join (3) on(4), (5) where (6)group by(开始使用select中的别名,后面的语句中都可以使用) (7) avg,sum,count,min,max (8)having (9) select (10) distinct (11) order by (12)limit 从这...

z_ssyy的博客 378

【验证技能树】UVM 源码解读01 -- UVM本质上就是软件工程方法论在芯片验证领域的应用

文章摘要: UVM(通用验证方法学)是基于SystemVerilog的芯片验证框架,采用组件化、面向对象和事务级抽象设计。其核心在于职责分离与数据流,通过Driver、Monitor、Sequencer等模块协作实现高效验证。UVM强调复用性、可扩展性和可维护性,类似软件工程的模块化与低耦合原则。理解其体系结构比记忆API更重要,有助于灵活组合组件并提升验证效率。UVM不仅是工具,更融合了软件工程思维,推动验证工作向自动化、系统化发展。掌握UVM底层逻辑能优化验证环境设计,适用于从IP到SoC的多层级验证场

qq_45869788的博客 1040

Python爬虫实战:5分钟搞定大众点评评论数据抓取(附完整代码)

本文详细介绍了使用Python爬虫高效获取大众点评评论数据的5个关键技巧,包括环境配置、智能页面解析、反反爬策略、数据存储与容错设计以及性能优化。通过实战案例和完整代码,帮助开发者快速掌握文本挖掘技术,适用于市场分析和商业决策。

weixin_30660027的博客 290

7 个超实用的 MySQL 语句写法,让同事们眼前一亮!

在写SQL时,经常灵活运用一些SQL语句编写的技巧,可以大大简化程序逻辑。减少程序与数据库的交互次数,有利于数据库高可用性,同时也能显得你的SQL很牛B,让同事们眼前一亮。 1.插入或替换 如果我们想插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。 情景示例:这张表存的每个客户最近一次交易订单信息,要求保证单个用户数据不重复录入,且执行效率最高,与数据库交互最少,支撑数据库的高可用。 此时,可以使用"REPLACE INTO"语句,这样就不必先查询,再决

Java技术栈,分享最主流的Java技术 1739

GNSS/RTK定位失效时的替代方案:视觉惯性里程计(VIO)

GNSS/RTK定位失效时的替代方案:视觉惯性里程计(VIO)​ ,人工智能,计算机视觉,大模型,AI,本文详细介绍了视觉惯性里程计(VIO)作为GNSS/RTK定位失效时的替代方案。阐述了VIO的定义、优势及与其他定位技术的区别,讲解了视觉传感器和IMU的工作原理及数据融合原理,分析了时间同步、标定等关键技术,介绍了VINS-Mono等常用框架、简单代码示例、应用场景,还探讨了VIO面临的挑战与未来发展趋势,展现了其在多个领域的重要性与应用潜力。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 16万+

mysql详细教程

数据库:DB(DataBase)概念:数据仓库,软件,安装在操作系统之上作用:存储数据,管理数据。

菜鸟学识的博客 5583

[ vulhub漏洞复现篇 ] ActiveMQ反序列化漏洞复现(CVE-2015-5254)

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。......

qq_51577576的博客 4444

DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命

随着人工智能技术蓬勃发展,DeepSeek 在太空探索领域展现出巨大应用潜力。本文深入剖析 DeepSeek 技术核心,包括低功耗运算、开源生态等优势,阐述其与传统航天技术的差异。从航天器自主控制、深空探测、载人航天等关键环节,结合实时轨道调整、故障诊断修复等实例,揭示 DeepSeek 对航天任务效率与安全性的提升作用。同时探讨其应用面临的太空环境适应、伦理安全等挑战,展望技术演进方向及与前沿技术融合前景,展现 DeepSeek 为人类太空探索带来的变革与深远意义。

邓邓子的博客 2258

MySQL 语句执行顺序

逻辑顺序关键字输入虚拟表核心动作输出虚拟表是否可用别名?1FROMJOIN原始表构建数据源,通过ON过滤,处理OUTER JOINVT12WHEREVT1过滤行VT2否3GROUP BYVT2将行合并成分组VT3否4HAVINGVT3过滤分组VT4否(MySQL有扩展支持)5SELECTVT4选择列,计算表达式,生成别名VT56DISTINCTVT5去除重复行VT67ORDER BYVT6对结果进行排序VT7是8LIMITVT7选取最终的子集最终结果是。

weixin_62924749的博客 1297

迅投miniQMT量化交易实战指南:从入门到自动化交易系统构建

迅投miniQMT量化交易实战指南摘要 本文全面介绍迅投miniQMT量化交易系统的开发流程,重点包括: 环境配置:详细说明miniQMT极简模式的安装步骤,包括xtquant库获取、Python版本要求及验证方法 行情数据模块:解析xtdata模块的核心功能,包括: 获取板块分类与股票列表 查询合约基础信息 下载历史K线数据(支持tick、分钟、日线等周期) 交易执行模块:介绍xttrader模块的交易API,涵盖: 账户连接与初始化 订单管理(下单、撤单、查询) 持仓与资产查询 实战开发:提供可直接运行

huanghm88的专栏 667

MySQL 的 SQL 语句执行顺序

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

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

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MYSQL的SQL语句执行顺序

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

2502_91375957的博客 1874

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

关于sql和MySQL的语句执行顺序(必看)

今天遇到一个问题就是mysql中insert into 和update以及delete语句中能使用as别名吗?目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。 一、sql执行顺序 (1)from (3) join (2) on (4) where...

猪哥 24万+

MySQL 查询语句的执行顺序

MySQL查询语句的执行顺序与书写顺序完全不同,主要分为9个逻辑阶段:1.FROM/JOIN确定数据源;2.ON应用连接条件;3.WHERE行级过滤;4.GROUP BY分组聚合;5.HAVING组级过滤;6.SELECT选择列;7.DISTINCT去重;8.ORDER BY排序;9.LIMIT分页。关键区别在于WHERE在GROUP BY前执行,而HAVING在后,且SELECT阶段才能使用列别名。优化建议包括:尽早用WHERE过滤、避免SELECT*、谨慎使用排序和大分页。掌握执行顺序是SQL性能优化的

csdn_tom_168的博客 1306

mysql 执行顺序 SQL语句执行顺序分析

最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如ou

qq690388648的专栏 1135

MySQL语句执行顺序详解

在MySQL中,SQL语句的执行顺序并不是按照我们书写的顺序执行的。实际上,SQL语句的执行顺序遵循一定的规则,这些规则是数据库引擎在解析和执行SQL语句时所遵循的逻辑。FROM:确定查询的数据源,包括表的连接和子查询。ON:在表连接时,用于指定连接条件。WHERE:过滤数据源中的数据。GROUP BY:对过滤后的数据进行分组。HAVING:对分组后的结果进行过滤。SELECT:选择需要的列。DISTINCT:去除重复的行。ORDER BY:对结果集进行排序。LIMIT:限制结果集的行数。

qq_56626843的博客 665

【Mysql一本通-7】select语句的执行顺序

MySQL 执行。

m0_69378371的博客 1109

MySQL语句执行顺序

MySQL 中的 SQL 语句执行顺序与书写顺序不同。理解 SQL 的执行顺序有助于优化查询性能、调试问题以及设计复杂查询。

weixin_43414019的博客 614

Mysql中查询语句的执行顺序

关于mysql查询语句的执行顺序也是面试和笔试中常问的考点之一,下面我们以实际的查询语句来看看查询语句的执行顺序到底是怎么样的。

shangshanzixu的博客 656

MySQL查询语句执行顺序详解

理解MySQL查询语句的执行顺序有助于编写更高效的查询。通过合理安排各个子句,我们可以更好地控制查询的行为和性能。希望这篇文章能帮助你更好地理解MySQL查询的执行过程,提高SQL查询优化的能力。

Java领域优秀创作者 1935
上一篇: Spring Cache简介和使用
下一篇: Redis持久化
java_hch
博客等级 码龄14年 14粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值