sql语句的执行顺序

      理解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的执行顺序。






转载于:https://my.oschina.net/u/3348790/blog/1083493

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值