Mysql中DQL(查询类)语句的执行顺序

本文详细介绍了SQL查询语句的关键字执行顺序,从`FROM`、`WHERE`、`GROUP BY`、`HAVING`、`SELECT`、`ORDER BY`到`LIMIT`。通过实例展示了别名的使用,验证了各步骤的执行逻辑,如`SELECT`中的别名不能在`WHERE`中使用,`ORDER BY`可以引用`SELECT`的别名等。
摘要由CSDN通过智能技术生成

一、SQL

我们要编写一段查询数据的SQL语句,经常会用到如下字段。

SELECT
		字段
FROM
		表名
WHERE
		条件列表
GROUP BY
		分组字段列表
HAVING 
		分组后条件列表
ORDER BY
		排序字段列表
LIMIT
		分页参数
		

你有没有思考过,上诉几个关键字的执行顺序,又是怎样的呢?

二、执行顺序

正确的执行顺序如下所示。

FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
LIMIT

三、验证

现在有一张员工表

create table emp(
    id  int auto_increment comment 'ID' primary key,
    name varchar(50) not null comment '姓名',
    age  int comment '年龄',
    dept_id int comment '部门ID'
)comment '员工表';
INSERT INTO emp (id, name, age, dept_id) VALUES (1, '张无忌', 20, 1),(2, '杨逍', 33, 1),(3, '赵敏', 18, 2), (4, '常遇春', 43, 2),(5, '小昭', 19, 3),(6, '韦一笑', 48, 3);

在这里插入图片描述
查询年龄大于15的员工姓名、年龄。并根据年龄升序排序,编写SQL语句如下

select name,age, from emp where age > 15 order by age asc

sql比较简单。下面我们通过定义别名来修改SQL语句,验证执行顺序。

3.1 select在where后执行

select的字段是可以取别名的,如这样

select NAME,age aage from emp  where aage > 15 order by age asc

执行结果
在这里插入图片描述
可以看出,select定义的别名,where无法读取这个字段,所以select在where后执行。

3.2 from在前面执行

在form处给表定义别名,其他地方都能访问到。所以 from在前面执行
在这里插入图片描述

3.3 order在select后执行

order可以使用select里面定义的别名,所以order是在select后执行的
在这里插入图片描述

3.4 LIMIT

limit最后执行,limit是对前面的结果取偏移量,再进行展示。

3.5 GROUP BY 和HAVING

这么没有使用这两个参数,但是值得注意的是,GROUPBY虽然在SELECT前面执行,但是他是能使用SELECT的别名的,因为mysql对此做了扩展。而HAVING是不能使用SELECT中定义的别名的。
不要以为执行顺序有问题。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i进击的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值