Sql中执行的顺序是怎么样的

58次阅读
没有评论

共计 1375 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

丸趣 TV 小编给大家分享一下 Sql 中执行的顺序是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

学过 Sql,或了解过 Sql 的人,应该都会写下面这行代码:

select * from t

上面代码表示查询 t 表中的所有信息,是 Sql 查询中最基础,最简单的一行代码,你可以把它理解成是其他编程语言中的 Hello World。

select * 只是你迈入 Sql 大门的第一步,在真实工作中,肯定不止这么简单的。我们来看一个例子。

现在有下面一个表 t , 存储了每个商品类别的成交明细,我们需要通过下面这张表获取订单量大于 10 对应的类别,并从中取出订单量前 3 的商品类别,会有一些测试的订单 (catid=c666 的为测试),我们需要过滤掉。

catidorderidc11c12c13c24c25c36……c10010000

要做上面的需求,我们的 Sql 可以这么写:

select
 catid,
 count(orderid) as sales
 t
where 
 catid    c666 
group by 
 catid
having
 count(orderid)   10
order by 
 count(orderid) desc
limit 3

上面的 Sql 代码中涉及到 select、from、where、group by、having、order by、limit 这 7 个关键词,基本上包括了 Sql 中所有的查询关键词,上面的顺序是这 7 个关键词的语法顺序,也就是你在写代码的时候,应该按照这个顺序写,那这 7 个关键词的执行顺序是什么样的呢?也就是先执行哪个再执行哪个?

可以肯定的是,肯定不是从上至下执行,如果是这样子的话,就没有写这篇文章的必要啦。

我一直坚持的一个态度就是,计算机在做事的时候和人没什么两样,基本逻辑和流程都一样,毕竟计算机也是人设计出来的。那既然这样,我们就来看看,如果是我们自己手动去做上面那个需求的时候,我们会怎么去做。

首先我是不是需要知道我要从哪个表去获取我想要的,也就是 from;现在我知道从哪个表获取了,可是并不是这个表里面所有的信息都是我需要的,我需要把一些不需要的去掉 (比如测试订单),或是把一些我需要的筛选出来,这就是 where;现在我把我需要的订单明细筛选出来,可是我想要每个品类的订单量,这个时候是不是需要做一个分组聚合,也就是 group by;分组聚合后的结果也并不是我们全部都要,我们只要大于 10 的品类,所以需要把大于 10 的筛选出来,非大于 10 的品类过滤掉,这就是 having;现在我们想要的大部分信息都已经出来了,我们就可以用 select 把他们查询出来了;因为我们最后需要取前三的品类,所以我们需要把查询出来的结果进行一个降序排列,即 order by;最后一步就是只把前三显示出来,做一个限制就行,也就是 limit。

以上就是 Sql 语句的一个基本执行顺序,总结一下就是:

from-where-groupby-having-select-orderby-limit

以上是“Sql 中执行的顺序是怎么样的”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1375字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)