🎀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>
执行顺序
from
对
from
子句中的左表<left_table>
和右表<right_table>
执行笛卡尔积,得到虚拟表VT1
。
on
对前面生成的虚拟表
VT1
进行ON
筛选,符合条件的会被记录到虚拟表VT2
中。
join
如果是
OUT JOIN
,那么将保留表中(如左表或者右表)未匹配的行作为外部行添加到虚拟表VT2
中,从而产生虚拟表VT3
;
WHERE
对步骤3产生的虚拟表
VT3
进行过滤,只有符合条件<where_condition>
的记录才会插入新的虚拟表VT4
。
group by
根据
group by
子句中的列,对步骤4的记录进行分组操作得到虚拟表VT5
。
with {CUBE|ROLLUP}
如果指定了
ROLLUP
选项,将创建一个额外的记录添加到虚拟表VT5
的最后,并生成虚拟表VT6
。
HAVING
对虚拟表
VT6
进行HAVING
条件过滤,只有符合的记录才会被插入到虚拟表VT7
中;
Select
将
Select
中指定的列从上一步产生的虚拟表中选出,插入虚拟表VT8
Distinct
如果在查询中指定了
distinct
子句,则会创建一张内存临时表VT9
Order by
根据
order by
指定的列对上一步输出的虚拟表进行排列,返回新的虚拟表VT10
Limit
选出指定位置开始的指定行数据,生成虚拟表
VT11
,并返回结果
结果
🎀MySQL-关键字执行顺序的更多相关文章
- mysql关键字执行顺序
from on join where group by having select distinct union order by 昨天去58面试,之前的java基础和数据结构算法之类的都还可以,最后 ...
- Mysql 语句执行顺序
1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西? 在开发中涉及到数据库,基本上只用到了sql语句,如何写sql以及对其进行优化就比较重要,那些mysql的厚本书籍针对的是DBA,我们只需 ...
- mysql where执行顺序
where执行顺序是从左往右执行的,在数据量小的时候不用考虑,但数据量多的时候要考虑条件的先后顺序,此时应遵守一个原则:排除越多的条件放在第一个. 在用MySQL查询数据库的时候,连接了很多个过滤条件 ...
- MySQL SELECT执行顺序
SELECT语句的完整语法为: () SELECT () DISTINCT <select_list> () FROM <left_table> () <join_typ ...
- mysql sql执行顺序
<pre name="code" class="html">mysql> explain select * from (select * fr ...
- 0708关于理解mysql SQL执行顺序
转自 http://www.jellythink.com/archives/924,博客比价清晰 我理解上文的是SQL执行顺序 总体方案.当你加入索引了以后,其实他的执行计划是有细微的变化,比方说刚开 ...
- MySQL语句执行顺序
执行顺序:见:http://www.cnblogs.com/rollenholt/p/3776923.html 下面我们来具体分析一下查询处理的每一个阶段 FORM: 对FROM的左边的表和右边的表计 ...
- mysql 语句执行顺序问题
今天在写程序的时候,做分页查找时无意中,将计算数据库查询数量的语句,放到了limit之中,导致出现了bug. 所以发现以下问题: select count(1) from table limit 0, ...
- Mysql的执行顺序
参考:http://blog.csdn.net/jintao_ma/article/details/51253356 http://www.cnblogs.com/rollenholt/p/37769 ...
- mysql语句执行顺序图示
随机推荐
- 未能加载文件或程序集"Symtem.Data.SQLite.dll"或它的某一个依赖项
我在window service 2016 等更高版本的服务器上遇见过,普通window系统未预见.可尝试安装 VC ++ 2010 我下载安装 之后就好了.
- YUV 格式
1. YUV比例 分三种:YUV44,YUV422,YUV420 2. YUV排布 分三种:YUV planar,YUV Semi-Plannar,YUV packed 以YUV422 8*4 为例 ...
- Ubuntu Linux部署DeepSeek
技术背景 DeepSeek是这段时间最热门的话题之一,其蒸馏模型可以实现低成本而高质量的推理,使得我们现在可以在本地小型化的硬件上也用上大模型这一AI利器.本文主要介绍通过Ollama来部署DeepS ...
- WAIC 2024,好city啊!
7月4日,"以共商促共享•以善治促善智"为主题的2024世界人工智能大会暨人工智能全球治理高/级别会议(简称"WAIC 2024")在上海举办.天翼云携智算创新 ...
- 使用PhantomJS解决VUE项目无法被百度收录
一.安装PhantomJS 安装文章:https://www.cnblogs.com/robots2/p/17340143.html 二.编写脚本spider.js // spider.js 'use ...
- Docker部署 .Net程序
项目准备 首先创建一个项目,这里准备的是api项目,当然也可以是其他项目,按照自己需要的项目创建即可: 添加Dockerfile 接下来添加Dockfile文件,Dockerfile文件是Do ...
- NetCore.Encrypt —— 整合加密
前言 最近呢又接触到加密了,回顾之前用到的加密经历,使用过DES.RSA.MD5.BASE64,前面也更新过两篇加密的文章,MD5加密和DES加密.之前的使用都是在.Net Framework平台,这 ...
- 如何配置支付宝密钥之如何配置普通 RSA2 密钥|保姆级教学(一)
进行支付宝开发的第一步就是:配置密钥. 但是有很多小伙伴都不知道怎么配置,这篇文章将手把手帮你从头开始捋清如何配置支付宝密钥- 这次首先放一下官方文档:[如何生成及配置 RSA2 密钥],大佬们也可以 ...
- 批量删除MySQL生产环境数据库表或表字段注释脚本
本文提供了一种批量删除MySQL生产环境中数据库表的注释或表字段注释的方法,通过脚本实现高效维护表结构的清晰性. 一.表注释修改 1.获取删除MySQL数据库表注释脚本select concat('A ...
- Android 监听短信数据库过滤获取短信内容上传至服务器
前言 Android 监听短信的方式有两种 1.监听短信数据库,数据库发生改变时回调. 2.监听短信广播 其中第二种方式由于国内各厂家的定制Android 可能导致无响应 目前测试 魅族 无法监听到短 ...