广告
返回顶部
首页 > 资讯 > 数据库 >SQL查询语句的执行顺序是怎样的
  • 214
分享到

SQL查询语句的执行顺序是怎样的

2024-04-02 19:04:59 214人浏览 八月长安
摘要

这篇文章主要介绍“sql查询语句的执行顺序是怎样的”,在日常操作中,相信很多人在SQL查询语句的执行顺序是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL查询语句的

这篇文章主要介绍“sql查询语句的执行顺序是怎样的”,在日常操作中,相信很多人在SQL查询语句的执行顺序是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL查询语句的执行顺序是怎样的”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

SQL 查询的执行顺序

于是我研究了一下,发现顺序大概是这样的。SELECT 并不是最先执行的,而是在第五个。

SQL查询语句的执行顺序是怎样的

这张图回答了以下这些问题

这张图与 SQL 查询的语义有关,让你知道一个查询会返回什么,并回答了以下这些问题:

  • 可以在 GRROUP BY 之后使用 WHERE 吗?(不行,WHERE 是在 GROUP BY 之后!)

  • 可以对窗口函数返回的结果进行过滤吗?(不行,窗口函数是 SELECT 语句里,而 SELECT 是在 WHERE 和 GROUP BY 之后)

  • 可以基于 GROUP BY 里的东西进行 ORDER BY 吗?(可以,ORDER BY 基本上是在最后执行的,所以可以基于任何东西进行 ORDER  BY)

  • LIMIT 是在什么时候执行?(在最后!)

数据库引擎并不一定严格按照这个顺序执行 SQL 查询,因为为了更快地执行查询,它们会做出一些优化,这些问题会在以后的文章中解释。

所以:

  • 如果你想要知道一个查询语句是否合法,或者想要知道一个查询语句会返回什么,可以参考这张图;

  • 在涉及查询性能或者与索引有关的东西时,这张图就不适用了。

混合因素:列别名

有很多 SQL 实现允许你使用这样的语法:

SELECT CONCAT(first_name, ' ', last_name) AS full_name, count(*) FROM table GROUP BY full_name

从这个语句来看,好像 GROUP BY 是在 SELECT 之后执行的,因为它引用了 SELECT  中的一个别名。但实际上不一定要这样,数据库引擎可以把查询重写成这样:

SELECT CONCAT(first_name, ' ', last_name) AS full_name, count(*) FROM table GROUP BY CONCAT(first_name, ' ', last_name)

这样 GROUP BY 仍然先执行。

数据库引擎还会做一系列检查,确保 SELECT 和 GROUP BY 中的东西是有效的,所以会在生成执行计划之前对查询做一次整体检查。

数据库可能不按此顺序执行查询(优化)

在实际当中,数据库不一定会按照 JOIN、WHERE、GROUP BY  的顺序来执行查询,因为它们会进行一系列优化,把执行顺序打乱,从而让查询执行得更快,只要不改变查询结果。

这个查询说明了为什么需要以不同的顺序执行查询:

SELECT * FROM owners LEFT JOIN cats ON owners.id = cats.owner WHERE cats.name = 'mr darcy'

如果只需要找出名字叫“mr  darcy”的猫,那就没必要对两张表的所有数据执行左连接,在连接之前先进行过滤,这样查询会快得多,而且对于这个查询来说,先执行过滤并不会改变查询结果。

数据库引擎还会做出其他很多优化,按照不同的顺序执行查询,不过我并不是这方面的专家,所以这里就不多说了。

LINQ 的查询以 FROM 开头

LINQ(C#VB.NET 中的查询语法)是按照 FROM...WHERE...SELECT  的顺序来的。这里有一个 LINQ 查询例子:

var teenAgerStudent = from s in studentList                       where s.Age > 12 && s.Age < 20                       select s;

pandas 中的查询也基本上是这样的,不过你不一定要按照这个顺序。我通常会像下面这样写 pandas 代码:

df = thing1.join(thing2) # JOIN df = df[df.created_at > 1000] # WHERE df = df.groupby('something', num_yes = ('yes', 'sum')) # GROUP BY df = df[df.num_yes > 2] # HAVING, 对 GROUP BY 结果进行过滤 df = df[['num_yes', 'something1', 'something']] # SELECT, 选择要显示的列 df.sort_values('sometthing', ascending=True)[:30] # ORDER BY 和 LIMIT df[:30]

这样写并不是因为 pandas 规定了这些规则,而是按照 JOIN/WHERE/GROUP BY/HAVING  这样的顺序来写代码会更有意义些。不过我经常会先写 WHERE 来改进性能,而且我想大多数数据库引擎也会这么做。

R 语言里的 dplyr 也允许开发人员使用不同的语法编写 SQL 查询语句,用来查询 Postgre、Mysql 和 SQLite。

到此,关于“SQL查询语句的执行顺序是怎样的”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: SQL查询语句的执行顺序是怎样的

本文链接: https://www.lsjlt.com/news/71362.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL查询语句的执行顺序是怎样的
    这篇文章主要介绍“SQL查询语句的执行顺序是怎样的”,在日常操作中,相信很多人在SQL查询语句的执行顺序是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL查询语句的...
    99+
    2022-10-19
  • sql语句执行顺序是怎样的
    这篇文章主要介绍了sql语句执行顺序是怎样的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。sql语句执行顺序:1、最先执行from tab;...
    99+
    2022-10-18
  • SQL查询语句的执行顺序解析
    SQL语句执行顺序 结合上图,整理出如下伪SQL查询语句。 从这个顺序中我们可以发现,所有的查询语句都是从 FROM 开始执行的。在实际执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。...
    99+
    2021-04-08
    SQL查询语句的执行顺序解析
  • SQL查询的执行顺序是怎样的
    本篇内容介绍了“SQL查询的执行顺序是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQL 查询的执...
    99+
    2022-10-19
  • SQL查询语句执行顺序的示例分析
    这篇文章主要介绍SQL查询语句执行顺序的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SQL查询语句执行顺序如下:(7) SELECT  (8)&...
    99+
    2022-10-18
  • sql语句执行顺序优先级是怎样的
    小编给大家分享一下sql语句执行顺序优先级是怎样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!sql执行顺序优先级由高到低依次...
    99+
    2022-10-18
  • Mysql系列SQL查询语句书写顺序及执行顺序详解
    目录1、一个完整SQL查询语句的书写顺序2、一个完整的SQL语句执行顺序3、关于select和having执行顺序谁前谁后的说明1、一个完整SQL查询语句的书写顺...
    99+
    2022-11-12
  • SQL查询的执行顺序是什么
    本篇内容主要讲解“SQL查询的执行顺序是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL查询的执行顺序是什么”吧!很多 SQL 查询都是以 SELEC&...
    99+
    2022-10-19
  • 关于SQL语句的执行顺序
    首先,要清楚在一select语句中都会用到哪些关键字: -----------select  -----------from -----------join -----------where -----------gr...
    99+
    2017-11-03
    关于SQL语句的执行顺序
  • mysql查询语句join、on、where的执行顺序
    目录一、典型SELECT语句完整的执行顺序二、from三、on四、on 条件与where 条件1、使用位置2、使用对象3、选择与使用五、join 流程mysql 的执行顺序 一、典型SELECT...
    99+
    2022-11-19
    mysql查询语句执行顺序 mysql join mysql on mysql where
  • SQL查询语句执行的过程
    目录MySQL基本架构Server 层1、连接器2、查询缓存3、分析器4、优化器5、执行器SQL语句举例: SELECT * FROM `test` WHERE `i...
    99+
    2022-11-13
  • SQL Select语句完整的执行顺序是什么
    这篇文章主要介绍SQL Select语句完整的执行顺序是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SQL Select语句完整的执行顺序:1、from子句组装来自不...
    99+
    2022-10-18
  • 讨论Oracle 中sql语句的执行顺序
    查询语句的执行顺序:select ename as name from scott.emp emp where emp.job=' CLERK' order by name;sele...
    99+
    2022-10-18
  • Sql中执行的顺序是怎么样的
    小编给大家分享一下Sql中执行的顺序是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!学过 Sql,或了解过 Sql 的人...
    99+
    2022-10-18
  • SQL查询语句执行的过程是什么
    这篇文章主要介绍“SQL查询语句执行的过程是什么”,在日常操作中,相信很多人在SQL查询语句执行的过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL查询语句执行的过程是什么”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • 一条SQL查询语句是如何执行的?
    导读 Mysql在中小型企业中是个香饽饽,目前主流的数据库之一,几乎没有一个后端开发者不会使用的,但是作为一个老司机,仅仅会用真的不够。 今天陈某透过一个简单的查询语句来讲述在Mysql内部的执行过程。 selec&...
    99+
    2019-06-13
    一条SQL查询语句是如何执行的?
  • sql中语句执行的优先级顺序是什么
    这篇文章给大家分享的是有关sql中语句执行的优先级顺序是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SQL语句的执行顺序MySQL的语句一共分为11步,如下图所标注的那样,...
    99+
    2022-10-18
  • 查询Oracle执行的顺序
    explain plan for select CFG_ID, COUNT(0) total  from ...
    99+
    2022-10-18
  • mysql select语句的执行顺序
    这篇文章主要讲解了“mysql select语句的执行顺序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql select语句的执行顺序”吧...
    99+
    2022-10-18
  • SQL语句执行深入讲解(MySQL架构总览->查询执行流程->SQL解析顺序)
    前言: 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作