关于sql和MySQL的语句执行顺序

今天做了一道面试题,问的是sql和MySql语句的执行顺序
那么先放上Sql语句执行顺序:
from 、 join 、 on 、where、 group by(开始使用select中的别名,后面的语句中都可以使用) 、 avg,sum… 、 having 、 select 、 distinct 、 order by 、 limit
那么再放上MySql语句的执行顺序:
开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果

例子:
select name, max as 总成绩

from tb_student

where name is not null

group by name

having max > 600

order by max;

在上面的示例中 SQL 语句的执行顺序如下:

(1). 首先执行 FROM 子句, 从 tb_student 表组装数据源的数据

(2). 执行 WHERE 子句, 筛选 tb_student 表中所有数据不为 NULL 的数据
(3). 执行 GROUP BY 子句, 把 tb_student 表按 “name” 列进行分组(注:这一步开始才可以使用select中的别名,他返回的是一个游标,而不是一个表,所以在where中不可以使用select中的别名,而having却可以使用)
(4). 计算 max() 聚集函数, 按 “总成绩” 求出总成绩中最大的一些数值

(5). 执行 HAVING 子句, 筛选课程的总成绩大于 600 分的.

(6). 执行 ORDER BY 子句, 把最后的结果按 "max " 进行排序.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值