一,mysql的编写顺序和执行顺序是不同的,根据以下例子进行分析,思考如何执行:
# 后面序号代表执行顺
SELECT (7)
DISTINCT (8)
*
FROM (1)
student
LEFT JOIN (3)
t_user t
on (2)
studentId = t.id
WHERE (4)
studentId=1
GROUP BY studentAge (5)
HAVING COUNT(studentAge) >10 (6)
ORDER BY studentId (9)
LIMIT 1 (10)
二,执行sql语句理解:
-
from:先指定了要查询的表
-
on: 过滤出所有满足on条件的列
-
jion:添加外部列
-
where:过滤表中数据的条件
-
group by:对过滤的数据进行分组
-
having:对上面已经分组的数据进行过滤的条件
-
select:查看结果集中的哪个列,或列的计算结果
-
order by :对查询结果进行排序
-
limit:取出指定行的数据,返给用户
网上图一张加深记忆:
三,为什么这样执行:mysql为了优化查询,采用上述执行顺序,并且每次执行关键字,都会生成一个临时表,供下个关键字执行查询时使用。