文档章节

sql语句的执行顺序

axingqi
 axingqi
发布于 2017/06/30 20:57
字数 508
阅读 9
收藏 0

      理解sql语句的执行顺序对优化sql非常重要,那么sql语句的执行顺序是怎样的呢,以一条简单的的语句做分析:

         这一条语句包含我们经常用到的一些关键字,select,from,where,group by,order by,它的执行顺序如下:

先执行from关键字后面的语句,明确数据的来源,它是从哪张表取来的。

接着执行where关键字后面的语句,对数据进行筛选。

再接着执行group by后面的语句,对数据进行分组分类。

然后执行select后面的语句,也就是对处理好的数据,具体要取哪一部分。

最后执行order by后面的语句,对最终的结果进行排序。

关于这个顺序,我们可以用别名来做一个判断:




                                   


        左图给emp_sex取了个别名sex,然后order by后面使用了这个别名,能正常的查到数据,说明order by的执行是在select之后。再看右边的这个图,笔者接着在group by后面也使用了sex别名,点击查询后提示错误:列名‘sex’无效。说明group by的执行是在select之前。

        至此我们有了初步的结论group by > select > order by。

        接下来笔者也给表取了个别名,然后在where和group 后面引用这个别名。

         sql正常执行,说明where和group by语句均在from语句之后执行。也就是,from > where 和 from > group by

        最后只剩下where和group by的比较了,这个无法用表别名来判断,笔者目前想到的是‘常识’。这个常识就是:分组之前的过滤用where,分组之后的过滤用having。可见,where的执行是在group by之前的,即 where > group by。

        根据数学知识,由

group by > select > order by

from > where

from > group by

where > group by

可得 from > where > group by > select > order by。这就是一条基本sql的执行顺序。






© 著作权归作者所有

axingqi
粉丝 0
博文 21
码字总数 9949
作品 0
茂名
私信 提问
[MySql]关于sql和mysql对于别名不能调用的一些理解

由于有部分语句别名不能调用原来是由于别名机制不同引起的,为了避免下次发生就整理了一下sql和mysql执行顺序发现内部机制是一样的,最大区别是在别名的引用上 在写sql的时候,由于有部分语句...

NateHuang
2016/11/17
139
0
SQL那些你不知道的事--你的困惑就在这里

很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数...

SuperPcf
2015/11/30
222
1
sql语句中各个部分函数执行的顺序

首先分析一下SQL: 这条SQL语句是否可以有下面两种理解呢   (1)先从Student表中选出age>20的数据,然后从这些数据中选择前面的10条数据。   (2)先从Student表中选出前10条数据,然后...

zhangbs
2016/08/22
115
0
致sql初学者

很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数...

hello菜bird
2016/02/29
92
0
oracle中Where子句顺序是否对SQL性能有影响

经常有人问到oracle中的Where子句的条件书写顺序是否对SQL性能有影响,我的直觉是没有影响,因为如果这个顺序有影响,Oracle应该早就能够做到自动优化,但一直没有关于这方面的确凿证据。在网...

疯狂的艺术家
2011/10/25
139
0

没有更多内容

加载失败,请刷新页面

加载更多

作为一个(IT)程序员!聊天没有话题?试试这十二种技巧

首先呢?我是一名程序员,经常性和同事没话题。 因为每天都会有自己的任务要做,程序员对于其他行业来说;是相对来说比较忙的。你会经常看到程序员在发呆、调试密密麻麻代码、红色报错发呆;...

小英子wep
今天
12
0
【SpringBoot】产生背景及简介

一、SpringBoot介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要...

zw965
今天
4
0
简述并发编程分为三个核心问题:分工、同步、互斥。

总的来说,并发编程可以总结为三个核心问题:分工、同步、互斥。 所谓分工指的是如何高效地拆解任务并分配给线程,而同步指的是线程之间如何协作,互斥则是保证同一时刻只允许一个线程访问共...

dust8080
今天
6
0
OSChina 周四乱弹 —— 当你简历注水但还是找到了工作

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享成龙的单曲《男儿当自强》。 《男儿当自强》- 成龙 手机党少年们想听歌,请使劲儿戳(这里) @hxg2016 :刚在...

小小编辑
今天
3.2K
22
靠写代码赚钱的一些门路

作者 @mezod 译者 @josephchang10 如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。 今天给大家分享一个精彩的 GitHub 库,这个库整理...

高级农民工
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部