当前位置: 首页 > news >正文

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

一、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中定义的别名的。
不要以为执行顺序有问题。

相关文章:

  • CMake Tutorial 巡礼(2)_添加库
  • java毕业设计蛋糕店会员系统Mybatis+系统+数据库+调试部署
  • IntelliJ IDEA中构建Spring Boot的项目
  • 计算机视觉项目-实时目标追踪
  • 初始数据结构
  • Qt5开发从入门到精通——第六篇一节( 图像与图片——位置相关函数 )
  • 最新版校园招聘进大厂系列----------(5)百度篇 -----未完待续
  • 计算机网络——物理层(互联网接入技术)
  • IntegralUI Web 22.3组件
  • 细说卷积神经网络(CNN)中所谓的“感受野”(Receptive Field)
  • Python 自动化教程(5) : 自动生成Word文件
  • 2022 9.8 模拟
  • Python 页面解析:Beautiful Soup库的使用
  • 请你设计一个LRU(最近最少使用)缓存约束的数据结构
  • 国内低代码平台“定制化开发”能力较强的有哪些?
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Apache Pulsar 2.1 重磅发布
  • CSS 提示工具(Tooltip)
  • java小心机(3)| 浅析finalize()
  • js对象的深浅拷贝
  • Netty源码解析1-Buffer
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • RxJS: 简单入门
  • SAP云平台里Global Account和Sub Account的关系
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从伪并行的 Python 多线程说起
  • 多线程 start 和 run 方法到底有什么区别?
  • 分布式任务队列Celery
  • 解析带emoji和链接的聊天系统消息
  • 我的业余项目总结
  • 小李飞刀:SQL题目刷起来!
  • 译米田引理
  • 责任链模式的两种实现
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • #传输# #传输数据判断#
  • $GOPATH/go.mod exists but should not goland
  • (07)Hive——窗口函数详解
  • (区间dp) (经典例题) 石子合并
  • (转)Unity3DUnity3D在android下调试
  • (转载)PyTorch代码规范最佳实践和样式指南
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET 常见的偏门问题
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • @ConditionalOnProperty注解使用说明
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ 数据结构 - C++] AVL树原理及实现
  • []T 还是 []*T, 这是一个问题
  • [30期] 我的学习方法
  • [APIO2015]巴厘岛的雕塑
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BZOJ1010] [HNOI2008] 玩具装箱toy (斜率优化)
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C#]猫叫人醒老鼠跑 C#的委托及事件