MySQL中一条SELECT语句是如何执行的

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/wangchengming1/article/details/88693509

查询操作是关系数据库中使用最为频繁的操作,也是构成其他SQL语句(如DELETE、UPDATE)的基础。

SELECT语法如下
(5)SELECT DISTINCT <select_list>                     

(1)FROM <left_table> <join_type> JOIN <right_table> ON <on_predicate>

(2)WHERE <where_predicate>

(3)GROUP BY <group_by_specification>

(4)HAVING <having_predicate>

(6)ORDER BY <order_by_list>

(7)LIMIT n, m
SELECT语句的处理过程
  • FROM阶段
  • WHERE阶段
  • GROUP BY阶段
  • HAVING阶段
  • SELECT阶段
  • ORDER BY阶段
  • LIMIT阶段
FROM阶段

一条查询的sql语句先执行的是FROM table负责把数据库的表文件加载到内存中去

WHERE阶段

WHERE会把表中的数据进行过滤,取出符合条件的记录行,生成一张临时表

GROUP BY阶段

GROUP BY阶段按照指定的列名切分成若干临时表

HAVING阶段

该阶段根据HAVING子句中出现的谓词对虚拟表进行分组进行筛选

SELECT阶段

这个阶段是投影的过程,处理SELECT子句提到的元素

  • 计算SELECT列表中的表达式
  • 若有DISTINCT,则删除重复行
ORDER BY阶段

根据ORDER BY子句中指定的字段进行排序

LIMIT阶段

取出指定行的记录,产生临时表,并返回给查询用户

猜你喜欢

转载自blog.csdn.net/wangchengming1/article/details/88693509