一、 关键字书写顺序
select
distinct
from
join
on
where
group by
having
union (all)
order by
limit
二、 关键字实际执行顺序
from
on
join
where
group by
having
select
distinct
union (all)
order by
limit
个人理解:
执行过程: Mysql会先执行from,然后根据on关键字去筛选目标表,筛选出的结果再进行join,这样就会形成一个临时表。然后去执行where条件去筛选这个临时表,这样基本就筛选出需要的数据了。然后就可以对数据进行group by进行分组,同时若是有必要就会再执行having对数据进行进一步筛选,这里执行完数据基本就是一定定型了,下面就需要select去筛选目标列了,完事之后需要使用distinct进行去重这样一个表的查询基本就结束了。若是需要多表查询则还需要使用union或者union all来进行连接多表的结果。然后就是对数据进行排序的order by ,排完顺序自然就是取分页了。这样就会将一个完整的sql执行完毕了。