Mysql语法顺序和执行顺序
Sql语句的执行顺序
例:SELECT `name`,COUNT(`name`) AS num FROM student WHERE grade < 60 GROUP BY `name` HAVING num >= 2 ORDER BY num DESC,`name` ASC LIMIT 0,2;
1、首先会执行from语句,把数据库的表文件加载到内存中。
2、执行where语句,根据筛选条件过滤出数据并且在内存中生成一张临时表。
3、如果有group by语句,会根据group by把内存中的临时表切割成多张临时表
4、执行select语句,如果语句中没有group by,则在临时表中执行select语句,若有group by语句,则会在多张临时表中分别执行select语句。
5、如果语句中有having关键字,则执行完select语句后执行having,对数据进行二次过滤,值得注意的是,执行where语句时,是不能用到字段别名的,因为执行where时,还没有执行select,所以这时是不能使用字段别名的,但是执行having时,是可以用字段别名的,因为having语句是在select语句执行之后执行的,所以可以用到字段别名。
6、当上述语句执行完成后,继续会执行order by语句,进行排序后执行limit分页语句,然后返回查询结果,结束当前sql语句的执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构