昨天面试,其中面试官问了select查询语句的执行顺序,我发现自己根本没有考虑过这方面的,于是回来整理了一下笔记
参考文章:
https://www.cnblogs.com/andy6/p/6657492.html
查询中用到的关键词主要有六个,并且它们的顺序依次为:
select--from--where--group by--having--order by
其中select和from是必须,其他关键词是可选的,这六个关键词的执行顺序和sql语句的书写顺序是不同的,而是按照以下顺序执行:
from--where--select--group by--having--order by
from:需要从哪个数据表检索数据
where:过滤表中数据的条件 , rownum分配给每个输出行并增1
select:查看结果集中的哪个列,或列的计算结果
group by:如何将上面过滤出的数据分组
having:对已经分组的数据进行过滤的条件
order by:按照什么顺序来查看返回的顺序
(rownum是一个伪列(不是真实存在的列,表中并不真实存在),是数据库从数据文件或缓冲区中读取数据的顺序)