select语句定义如下:
<SELECT clause> [<FROM clause>] [<WHERE clause>] [<GROUP BY clause>]
[<HAVING clause>] [<ORDER BY clause>] [<LIMIT clause>]
先给出SQL语句执行顺序结论,后通过案例分析:
- 最先执行from tab;
- where语句是对条件加以限定;
- 执行分组语句group by
- 执行分组函数
- 执行分组后过滤having
- select语句。
- order by排序语句。
- limit
Select 6
…
分组函数(avg、sum等) 4
…
From 1
…
where 2
…
group by 3
…
having 5
…
order by 7
limit 8
案例SQL执行分析
select deptno ,avg(sal) from emp where ename is not null group by
deptno having avg(sal)>2000 order by deptno desc;
- 先确定从哪个表中取数据,所以最先执行from emp。如果存在多表连接,可以对表加别名,方便后面的引用。
- 执行 where子句, 筛选 emp 表中ename数据不为 null 的数据 。
- 执行 group by 子句, 把 emp 表按 “deptno” 进行分组。
- 执行 avg(sal) 分组函数, 按分组计算平均工资(sal)数值。 (常用的聚合函数有max,min, count,sum,聚合函数的执行在group by之后,having之前。如果在where中写聚合函数,就会出错。)
- 执行 having 子句, 筛选平均薪资大于2000的。
- 执行select选出要查找的字段,如果全选可以select *。这里选出部门编号,各部门平均工资。
- 执行order by 排序语句。order by语句在最后执行,只有select选出要查找的字段,才能进行排序。
- limit是SQL语句执行的最后一个环节。
呜啦啦啦啦 看官喜欢的话点赞收藏或者关注一下吧
本文详细介绍了SQL查询的执行顺序,从FROM开始,经过WHERE过滤,再到GROUP BY分组,接着应用HAVING条件,然后是SELECT选择字段,再进行ORDER BY排序,最后是LIMIT限制返回结果的数量。以一个具体的SQL查询案例分析了这一过程。
8636

被折叠的 条评论
为什么被折叠?



