笔试被问烂了:SQL的执行顺序

先给结论

from>join>where>group by>聚合函数>having>select>order by>limit

1、最先执行from table;

需要先确定从哪个表中取数据,所以最先执行from table。

2、join连接

用于把来自两个或多个表的行结合起来,简单补充一下连接的类型

  • 自然连接(natural join)
  • 内连接(inner join):内连接查询能将左表和右表中能关联起来的数据连接后返回,返回的结果就是两个表中所有相匹配的数据。
  • 外连接(outer join):外连接分为左外连接(LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行)、右外连接(RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行)、还有一个FULL JOIN(全连接),不过MYSQL不支持全连接
  • 交叉连接(cross join)即笛卡尔连接

3、where语句;

where语句是对条件加以限定

4、分组语句【group by…… having】;

group by是分组语句

having是和group by配合使用的,用来作条件限定

5、聚合函数;

常用的聚合函数有max,min, count,sum,聚合函数的执行在group by之后,having之前

举例:count函数查询分组后,每一组分别有多少条数据

select count(*) from user group by gender

值得注意的是:聚合函数的执行在group by之后,having之前

6、select语句;

对分组聚合完的表挑选出需要查询的数据

7、Distinct

distinct对数据进行去重

如果sql语句存在聚合函数,例如count、max等,会先执行聚合函数再去重

8、order by排序语句。

order by排序语句

select * from user order by id  升序排序
select * from user order by id desc 降序排序

9、limit

limit用于指定返回的数据条数

select * from user limit 2
从user表中查询前两条数据
该sql等同于
select * from user limit 0,2
表示从第0条开始取两条数据

limit常配合order by使用

select * from user order by id limit 3
根据id排序,选出id排序前三的数据

总结

from>join>where>group by>聚合函数>having>select>order by>limit

例子

select 
distinct user.name 
from user 
join vip on user.id=vip.id 
where user.id>10 
group by user.mobile 
having count(*)>2 
order by user.id
limit 3;

执行顺序

  1. from user
  2. join vip on user.id=vip.id ,join是表示要关联的表,on是连接的条件
  3. where user.id>10
  4. group by user.mobile 根据user.mobile分组
  5. 然后先执行count(*)在执行having,查询分组之后数量大于2的分组数据
  6. select 对分组聚合完的表挑选出需要查询的数据
  7. distinct查询出来的数据去重
  8. order by user.id 对去重后的数据排序
  9. limit 3对排序后的数据选出前面3条
#秋招##后端##数据库##sql##笔试#
全部评论
sql执行就是: 先有表(from、on、join),才能过滤(where),再才能分组(group、having),再才能选择去重(select distinct),再才能排序(order by),最后才能分页(limit)
117 回复 分享
发布于 2022-09-06 09:31 陕西
我出息了!最近在看sql必知必会,居然能看懂你在说什么了
9 回复 分享
发布于 2022-09-05 15:47 北京
阿巴阿巴
1 回复 分享
发布于 2022-09-11 10:36 上海
点赞 回复 分享
发布于 2022-09-05 18:41 上海
厉害,top1了
点赞 回复 分享
发布于 2022-09-05 17:48 广东
我前段时间才看到的,在复习一下,4.7万了
3 回复 分享
发布于 2022-09-06 00:11 湖北
tql
2 回复 分享
发布于 2022-09-05 18:05 广东
rk1
2 回复 分享
发布于 2022-09-05 17:59 湖南
阿巴阿巴
1 回复 分享
发布于 2022-09-11 10:36 上海
有用!
1 回复 分享
发布于 2022-09-06 00:19 广东
这是哪个公司呀
1 回复 分享
发布于 2022-09-05 16:57 上海
可以到我主页看看我公司,今年互联网情况不好的我觉得是个好的选择
点赞 回复 分享
发布于 2022-09-15 14:32 北京
不错,不错
点赞 回复 分享
发布于 2022-09-07 11:03 湖北
m
点赞 回复 分享
发布于 2022-09-06 17:41 陕西
点赞 回复 分享
发布于 2022-09-06 15:22 广东
666
点赞 回复 分享
发布于 2022-09-06 12:28 四川
66
点赞 回复 分享
发布于 2022-09-06 12:26 四川
超哥 TQL 
点赞 回复 分享
发布于 2022-09-06 11:06 广东
tql!
点赞 回复 分享
发布于 2022-09-05 22:24 广东
点赞 回复 分享
发布于 2022-09-05 21:46 广东

相关推荐

常规问题: 1. 3分钟简单自我介绍2. 在实习和开源经历中,你遇到的最大困难或最具挑战性的事情是什么?实习拷打(拓展相应的场景八股)慢 sql 治理相关的1. 你在平台稳定性建设中提到通过添加索引、读写分离优化慢SQL,具体是怎么做的?2. 读写分离可以再详细说一下吗3. 能否举一个添加索引的具体例子?比如在哪个字段上加了什么类型的索引?4. 你加的是单列索引,如果查询只需要表中的几个字段,当前的单列索引是否有优化空间?5. 联合索引相比单列索引的优势是什么?为什么更优?(从回表,索引下推优化那个方向说就好)es 慢查治理相关1. 关于ES扩容主分片优化查询,具体是怎么做的?2. 系统的ES集群资源配置你了解吗?(如CPU、节点数等)3. 扩容分片数量是如何确定的?仅依据数据量吗?4. 分片切割后为什么查询会变快(并行查询)5. 将 long 类型字段转为keyword类型,是如何利用跳表结构的?这里其实并不能,只是切换是为了适应精准匹配的场景,keyword 的底层用的是倒排索引+跳表6. 除了分片扩容和类型转换,还有哪些方式可以优化ES慢查询?(force merge 整理碎片)分布式锁(业务中有个并发修改用到了,主要问的一些分布式锁的实现细节)1. 你在业务中使用的分布式锁是标准库还是自研的?2. 让你自己实现一个最简单的分布式锁,你会怎么实现?3. 如果任务加锁后异常退出,没有释放锁,如何避免死锁?4. 如果任务执行时间很长,锁过期被其他任务获取,原任务完成后误删了别人的锁,如何解决(防止锁的误释放,加标识)5. 如果任务A包含多个子任务,且子任务本身也有加锁逻辑,在嵌套调用时会因重复加锁失败,如何解决?(可重入锁的实现)6. 在秒杀场景下,能否直接用分布式锁控制库存扣减?会有什么问题?7. 如何让秒杀请求不立即失败?(锁的自旋)并发编程1. 你使用CompletableFuture并发查询多个维度,底层是如何实现并发的?2. 你是自己定义线程池,还是使用默认线程池?3. 你是基于什么依据设置线程池参数的?4. 如果一个任务同时包含CPU密集型和I/O密集型操作,共用一个线程池会有什么问题?应该如何设计?(线程池隔离,避免cpu密集型任务阻塞I/O密集型任务)Agent和开源相关的内容1. 你的基座模型切换(DeepSeek → 千问)后,响应是流式还是非流式?2. 为什么关注完整响应时间,而不是首字响应时间?(主要是业务上的一个需要)3. 你的性能优化目标是在保证输出内容不变的前提下缩短生成时间吗?4. 你在Agent框架中使用了责任链模式和观察者模式,请分别解释这两种模式5. 既然有四个固定执行步骤(Agent执行前,执行后,模型执行前,执行后),是否可以用模板方法模式替代责任链模式?6. 你使用观察者模式的具体场景是什么?为什么选择它?7. 你还了解哪些常用设计模式?8. 你提到使用HNSW算法进行向量搜索,能简述其基本原理吗?(避免全表的向量查询)9. 为什么不直接用余弦相似度做全量匹配,而要引入HNSW?10. 你是否使用过BM25算法?它的作用是什么?11. 向量搜索有哪些弊端?12. 向量检索和BM25全文检索的得分量纲不同,如何进行混合排序?(引入一个精排模型重新打分)反问:1. 业务(智能客服相关)2. 不足,基础还需要加强无手撕,总体一个小时总结:面试体验很好,主要就是根据简历延伸一些八股和简单场景,有些还需要加强的地方,挖出来了自己基础上的一些问题
点赞 评论 收藏
分享
评论
206
1341
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务