首页 > 编程知识 正文

sql语句的执行顺序是怎样的,数据库执行顺序

时间:2023-05-04 16:44:04 阅读:29845 作者:229

总共150篇/dtdyj

学习过Sql或者知道Sql的人,应该会写以下代码。

select*fromt上面的代码表示查询t表中的所有信息,是Sql查询中最基础、最简单的代码行。 这可以理解为其他编程语言的Hello World。

select *只是迈向Sql的第一步。 在实际工作中,不仅仅是这些。 请看一个例子。

现在有下表t。 包含各商品类别的成交明细行。 需要从下表中获取订单数超过10的对应类别,从中取出订单数前三位的商品类别。 有几个测试订单(catid=c666的为测试)。

catidorderidc 11 c 12 c 13 c 24 c 25 c 36……要使c 10010000满足上述要求,我们的Sql可以写为:

选择类别,计数(orderid ) assalesfromtwherecatid(C666 ) groupbycatidhavingcount (orderid ) 10顺序计数(10orderbycount ) orderid ) 上面的顺序是这七个关键字的语法顺序。 也就是说,写代码的时候,应该按照这个顺序写。 那么,这7个关键词的执行顺序如何呢? 也就是说,先执行哪个,再执行哪个?

确实,不是从上到下执行,而是这样的形式的话,就没有必要写这篇文章了。

我一直坚持的态度之一是,电脑在工作上和别人没有区别,基本逻辑和流程都一样,毕竟电脑也是人设计的。 那么,我们来看看,当我们自己手动进行上述需求时,我们会怎么办。

首先,你不是需要知道我从哪个表得到我想要的东西,也就是from吗? 我知道现在是从哪个表格里获取的,但并不是这个表格里的所有信息都是我需要的。 我需要去除一些不需要的东西,或者筛选出需要的东西。 这就是where; 现在我筛选出需要的订单明细。 但是,我想要每个类别的订货量。 此时,有必要建立组聚合,也就是组by吗; 分组聚合的结果也不是我们所有人都想要的,我们只是大于10的类别,所以需要筛选大于10的类别,过滤大于10的类别以外的类别。 这就是having; 现在我们想要的大部分信息都出来了,我们可以在select上查他们; 我们最后需要取前三个类别,所以我们需要按降序排列查询结果。 即order by; 最后一步只显示前三个,加以限制就可以了。 也就是说,limit。

以上是Sql语句的基本执行顺序。 归纳起来,如下。

从-硬件-组by-having-select-order by-limit

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。