当前位置: 首页 > news >正文

MySQL-关键字执行顺序

💖简介

MySQL中,SQL查询语句的执行遵循一定的逻辑顺序,即使这些关键字在SQL语句中的物理排列可能有所不同。

🌟语句顺序

(8) SELECT (9) DISTINCT<select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE|ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list>
(11) LIMIT <offset,limit_number>

✨执行顺序

  1. from

from子句中的左表<left_table>和右表<right_table>执行笛卡尔积,得到虚拟表VT1

  1. on

对前面生成的虚拟表VT1进行ON筛选,符合条件的会被记录到虚拟表VT2中。

  1. join

如果是OUT JOIN,那么将保留表中(如左表或者右表)未匹配的行作为外部行添加到虚拟表VT2中,从而产生虚拟表VT3

  1. WHERE

对步骤3产生的虚拟表VT3进行过滤,只有符合条件<where_condition>的记录才会插入新的虚拟表VT4

  1. group by

根据group by子句中的列,对步骤4的记录进行分组操作得到虚拟表VT5

  1. with {CUBE|ROLLUP}

如果指定了ROLLUP选项,将创建一个额外的记录添加到虚拟表VT5的最后,并生成虚拟表VT6

  1. HAVING

对虚拟表VT6进行 HAVING 条件过滤,只有符合的记录才会被插入到虚拟表VT7中;

  1. Select

Select中指定的列从上一步产生的虚拟表中选出,插入虚拟表VT8

  1. Distinct

如果在查询中指定了distinct子句,则会创建一张内存临时表VT9

  1. Order by

根据order by指定的列对上一步输出的虚拟表进行排列,返回新的虚拟表VT10

  1. Limit

选出指定位置开始的指定行数据,生成虚拟表VT11,并返回结果


结果

http://www.lryc.cn/news/489370.html

相关文章:

  • 极客时间《Redis核心技术与实战》开篇词 知识点总结
  • TCP并发服务器
  • Debug-031-近期功能实现小结
  • Consumer Group
  • .NET架构师学习大纲
  • 【代码随想录】贪心
  • Harmony鸿蒙类似与Android中broadcast广播的api使用及释义
  • openGauss 6.0.0主备部署(企业版)
  • 【机器学习】聚类算法原理详解
  • Ubuntu20.04从零安装IsaacSim/IsaacLab
  • 基于Java Springboot大学校园旧物捐赠网站
  • 【Java 集合】Collections 空列表细节处理
  • 大数据实验4-HBase
  • deepin系统下载pnpm cnpm等报错
  • #Js篇:JSON.stringify 和 JSON.parse用法和传参
  • c#通过网上AI大模型实现对话功能
  • pymysql模块
  • WPF-模板和样式
  • 网络编程 day1.2~day2——TCP和UDP的通信基础(TCP)
  • element ui table 每行不同状态
  • 力扣--LRC 142.训练计划IV
  • windows下,用CMake编译qt项目,出现错误By not providing “FindQt5.cmake“...
  • 【element-tiptap】Tiptap编辑器核心概念----结构篇
  • 半导体工艺与制造篇3 离子注入
  • 利用开源的低代码表单设计器FcDesigner高效管理和渲染复杂表单结构
  • 淘宝 NPM 镜像源
  • i春秋-GetFlag(md5加密,字符串比较绕过)
  • SpringBoot中设置超时30分钟自动删除元素的List和Map
  • 入门车载以太网(6) -- XCP on Ethernet
  • DAY4 网络编程(广播和多线程并发)