SQL ASNI where from group order 顺序 where和having,SQL底层执行原理

这篇具有很好参考价值的文章主要介绍了SQL ASNI where from group order 顺序 where和having,SQL底层执行原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQL ASNI where from group order 顺序 where和having,SQL底层执行原理,sql,数据库,oracle
SQL语句执行顺序:
from–>where–>group by -->having — >select --> order

第一步:from语句,选择要操作的表。

第二步:where语句,在from后的表中设置筛选条件,筛选出符合条件的记录。

第三步:group by语句,把筛选出的记录进行分组。

第四步:having语句,设置条件筛选分组后的数据。

第五步:select语句,选取经过上述流程后的结果集。

第六步:order by语句:将select后的结果集按照顺序展示出来。

注意:

掌握SQL语句执行流程非常重要,是理解并写好SQL语句的前提,根据实际业务逻辑要执行的数据库操作对应到SQL语句的执行流程能够帮助我们快速写出相应功能的标准SQL语句。

where和having区别:
where在group by前, having在group by 之后。
where 用于 过滤数据行 , having 用去过滤分组,是结果集过滤
where 针对数据库文件进行过滤,having 针对查询结果进行过滤,也就是说 where 根据数据表中的字段直接进行过滤的 having是根据前面已经查询出的字段(结果集)进行过滤 ,where 先过滤 having 后过滤
where中不能使用聚合函数,having中可以使用聚合函数。原因:因为聚合函数是针对结果集进行的,但where是在查询结果集之前进行,故where中不能使用聚合函数;having是针对结果集做筛选的,故一般把聚合函数放在having中。
HAVING 关键字和 WHERE 关键字都可以用来过滤数据,且 HAVING 支持 WHERE 关键字中所有的操作符和语法。

SQL ASNI where from group order 顺序 where和having,SQL底层执行原理,sql,数据库,oracle

sql 查询执行顺序

SQL 92

select col1,col2,avg(col3)...coln      ###  avg  聚合函数又叫组函数,

from  t1,t2.。。tn

where 多表查询的连接条件   and   不包含聚合函数的过滤条件

group by   col3.。。

having   包含聚合函数的过滤条件     # sum(xxx)>1000

order by    coln  asc  ,coln  desc
limit          #   sql server  中没有limit 关键字

SQL 99

select col1,col2,avg(col3)...coln      ###  avg  聚合函数又叫组函数,

from  t1  [leftrightinner] join t2  on 多表查询的连接条件

where  不包含聚合函数的过滤条件

group by   col3.。。

having   包含聚合函数的过滤条件     # sum(xxx)>1000

order by    coln  asc  ,coln  desc
limit          #   sql server  中没有limit 关键字

SQL ASNI where from group order 顺序 where和having,SQL底层执行原理,sql,数据库,oracle

在select 语句执行这些【from ——>where——>group by——>having——> select ——>order by——>limit】步骤时,每步都会产生一个虚拟表,然后这个虚拟表传入一下步中作为输入。 这些步骤隐含在sql执行过程中,对于我们来说是不可见的。。

子查询

在select 语句中,除了 group by和 limit 之前,其他的位置都可以声明 子查询文章来源地址https://www.toymoban.com/news/detail-634327.html

到了这里,关于SQL ASNI where from group order 顺序 where和having,SQL底层执行原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用SQL系列 之 如何在SQL中使用GROUP BY和ORDER BY

    结构化查询语言(SQL)数据库可以跨多个表存储和管理大量数据。对于大型数据集,理解如何排序数据是很重要的,特别是对于分析结果集或为报告或外部通信组织数据。 SQL中有两个常用的用于数据排序的语句: GROUP BY 和 ORDER BY 。 GROUP BY 语句根据查询中指定的列对数据进行分组

    2024年02月09日
    浏览(49)
  • SQL HAVING 子句详解:在 GROUP BY 中更灵活的条件筛选

    HAVING 子句被添加到SQL中,因为 WHERE 不能与聚合函数一起使用。 HAVING语法 以下是Northwind示例数据库中“Customers”表的一部分选择: CustomerID CustomerName ContactName Address City PostalCode Country 1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany 2 Ana Trujillo Emparedados y helados Ana

    2024年02月05日
    浏览(61)
  • sql的order by 按照自定义的顺序排列

    SQL 的 ORDER BY 子句可以按照自定义的顺序进行排列。 可以使用 CASE 表达式来指定自定义的排序顺序。以下是一个示例: 假设我们有一个表格 students 包含字段 name 和 grade ,我们想按照自定义的顺序对 name 字段进行排序,可以这样写: 使用了 CASE 表达式来为每个名字指定一个数

    2024年02月20日
    浏览(29)
  • 玩转SQL语句之group by 多字段分组查询与having子句,一篇解决你的疑惑!

    分组,顾名思义,分成小组。简而言之就是就是把相同的数据分到一个组。 如下表(表名gb),里面有16条数据,前8条是狗狗,后8条是猫猫. 现在对name这个列进行分组查询 得到结果如下: 我们发现他把原始表分为了两个小组,狗狗小组和猫猫小组。从这可以看出分组查询就

    2023年04月18日
    浏览(37)
  • SQL 查询的执行顺序

    by emanjusaka from ​ https://www.emanjusaka.top/2023/09/sql-query-order 彼岸花开可奈何 本文欢迎分享与聚合,全文转载请留下原文地址。 了解 SQL 查询的执行顺序对我们解决一些问题很有帮助,有时我们可能会疑惑为什么不能对分组的结果进行筛选这样类似的问题?之前一直不是理解这个

    2024年02月10日
    浏览(41)
  • SQL语句的执行顺序

    1 from                找表 2 on                   关联条件帅选 3 join                 关联表操作 4 where             条件筛选 5 group by         进行分组 6 avg,sum…      执行函数 7 having            分组后筛选 8 select           

    2024年02月10日
    浏览(39)
  • SQL语句执行顺序相关问题

    注意本文是SQL执行顺序,不是MySQL Server内部执行流程。 MySQL并非像PostgreSQL(被认为是最接近 SQL 标准的数据库之一)一样严格按照SQL标准,MySQL执行引擎会根据查询的具体情况和优化策略来决定具体的执行顺序,所以SQL执行顺序是理论顺序。 select...from...join...on...where...group

    2024年02月19日
    浏览(41)
  • MySQL中的having和where的区别

    HAVING 和 WHERE 是 SQL 查询中用于筛选数据的两个,但它们在使用时有一些区别: WHERE 子句: 1用于在查询执行之前对原始数据进行筛选。 2作用于单行数据,过滤不满足条件的数据行。 3在对单个行进行判断和过滤时使用,例如基于行的条件筛选。 HAVING 子句: 1用于在数

    2024年02月12日
    浏览(41)
  • SQL_DQL_执行顺序

    SELECT              字段列表                                         4                                                           1 FROM                 表名列表                                          1 WHERE               条件列表 (可以有多个条件

    2024年01月25日
    浏览(35)
  • 二、SQL-5.DQL-9).执行顺序

    先执行①from(定义emp的别名为e),再执行②where(调用别名e):  再执行④select:  给④select取别名ename,eage,此时把②where别名e.age改为eage: 报错,②where在④select之前执行,eage还没有定义   ④select在⑤order by之前执行,所有order by可以用select中定义的别名:

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包