首页 > 数据库 >了解 SQL 查询执行顺序

了解 SQL 查询执行顺序

时间:2024-10-28 21:16:26浏览次数:6  
标签:顺序 SQL 查询 SumOrderAmount 子句 CustomerID SELECT

前言

SQL 是一种标准化的结构化查询语言,涉及结构化查询时,高效地检索数据至关重要。SQL 在关系关系数据库交互至关重要,掌握其复杂性可以提高我们的数据查询技能。

了解SQL查询子句的执行顺序,对于编写正确高效的 SQL 语句至关重要。本文一起探讨 SQL 查询子句的典型执行顺序及了解在查询中的交互方式。

查询字句

1、FROM

FROM 子句是查询的起点,它指定要从中检索数据的表或视图。在此阶段,将处理链接、子查询和表引用。本质上此子句是为数据检索设置上下文。

FROM Customers a

2、JOIN

JOIN 子句是在FROM子句之后,根据相关列合并两个或多个表中的行,它决定了如何匹配不同表中的行。

此步骤包括各种类型的连接,如内部连接(inner join)、外部连接(left join、right join)和交叉连接(cross join)

JOIN Orders b ON a.CustomerID = b.CustomerID

3、WHERE

WHERE 子句根据指定条件筛选行。它在表联接后但在任何分组或聚合发生之前对行应用条件。此步骤对于将数据集缩小到仅相关行至关重要。

WHERE b.CreateDate >='2024-06-01'

4、GROUP BY

GROUP BY 子句将具有相同值的行分组。这通常与聚合函数(COUNT、SUM、AVG等)一起使用,以对分组数据执行计算。该子句是根据指定的列将数据组织到群组中。

GROUP BY a.CustomerID

5、HAVING

HAVING 子句与 WHERE 子句类似,根据指定的条件过滤组。但它是在分组完成后应用的。该子句可用于过滤聚合后不符合某些条件的组。

HAVING sum(b.OrderAmount)> 1000

6、SELECT

SELECT 子句指定要包含在结果集中的列或表达式。您可以在此处定义查询的输出,包括任何计算、表达式和别名。该子句确定将从查询中返回哪些数据。

SELECT TOP 10
    a.CustomerID,
    sum(b.OrderAmount) AS SumOrderAmount

7、DISTINCT

DISTINCT 关键字从结果集中删除重复的行。它在子句之后应用,以确保输出仅包含唯一行。

SELECT DISTINCT a.CustomerName

8、ORDER BY

ORDER BY 子句根据一个或多个列对结果集进行排序。应用此语句,可以将结果集按所需顺序显示。还可以根据需要指定升序或降序排序来组织数据。

ORDER BY SumOrderAmount DESC

9、LIMIT 或 TOP

LIMIT(MySQL)或 TOP(SQL Server)子句限制了查询返回的行数,并选择性地跳过指定的行数。

TOP 10

查询示例

通过下面一个查询说明其执行顺序:

SELECT TOP 10
    a.CustomerID,
    sum(b.OrderAmount) AS SumOrderAmount
FROM
    Customers a
JOIN
    Orders b
ON
    a.CustomerID = b.CustomerID
WHERE
    b.CreateDate > '2024-06-01'
GROUP BY
    a.CustomerID
HAVING
    sum(b.OrderAmount)  > 1000
ORDER BY
    SumOrderAmount DESC

执行顺序按下面步步进行

1、From: 指定Customers和Orders表。

2、Join: 根据CustomerID合并Customers和Orders表。

3、Where: 筛选出以Orders表CreateDate仅包含2024-06-01日期之后的订单。

4、Group by: 按CustomerID对结果进行分组。

5、Having:筛选出仅包含具有订单金额大于1000以上的订单组。

6、SELECT:指定要包含在结果集中的列CustomerID和sum(b.OrderAmount) AS SumOrderAmount。

7、DISTINCT:示例查询语句中未使用,如果使用则在此处应用。

8、ORDER BY: 按SumOrderAmount降序(或升序)对结果进行排序。

9、LIMIT或TOP: 将结果集限制为前几行。

小结

通过了解 SQL 查询子句的执行顺序与每个子句的处理方式以及它们如何交互,可以帮助我们编写较优化的查询。如有不到之处,请多多包涵。

标签:顺序,SQL,查询,SumOrderAmount,子句,CustomerID,SELECT
From: https://blog.csdn.net/Funniyuan/article/details/143270369

相关文章

  • 初识mysql数据库
    1、数据库的概念1.1数据:能被计算机识别并处理的符号集合。1.2数据库:是存储和管理数据的系统。数据库是有组织可共享的,持久存储和管理数据的容器。数据库可以是关系型的,也可以是非关系型的。1.3数据库的优点:1.持久化数据到本地2.可以实现结构化查询,方便管理3.方便数据检......
  • 从零开始的MySQL生活
    1、安装MySQL1.1下载链接通过百度网盘分享的文件:mysql-installer-community-8.0.40.0.msi链接:https://pan.baidu.com/s/1zhZ2qI1OYz4GV4fg9x0E-Q?pwd=gtdk 提取码:gtdk2、配置环境2.1找到刚刚安装的位置,里面有一个名为"bin"的文件夹,打开并复制其路径。2.2配置环......
  • [MySQL]第六章:MySQL表的约束
    本专栏内容为:MySQL学习专栏......
  • mysql弱密码爆破
    mySQL弱密码 靶场:/vulhub/mysql/CVE-2012-2122 启动:docker-composeup-d扫描端口nmap-Sv-Pn-T4靶机ip 看到在3306端口开启了mysql服务爆破账号密码 1.使用超级弱口令检测工具(github下载) 爆破出root/123456 2.使用Hydra爆破hydra-L用户名字典—P密码......
  • MySQL操作
    一.MySQL优点多语言支持:MySQL为C、C++、Python、Java等多种编程语言提供了API,访问和使用方便。可以移植性好:MySQL是跨平台的。支持大量数据查询和存储:MySQL可以承受大量的并发访问。二.MySQL常用命令1.查看当前所有的数据库showdatabases; 2.创建库createdatabase......
  • 青少年编程与数学 02-002 Sql Server 数据库应用 16课题、安全机制
    青少年编程与数学02-002SqlServer数据库应用16课题、安全机制课题摘要:一、安全机制1.身份验证(Authentication)2.授权(Authorization)3.角色(Roles)4.加密(Encryption)5.审计(Auditing)6.其他安全特性二、身份验证1.Windows身份验证模式(WindowsAuthenticationMod......
  • 【MySql进阶及常见方案】mysql索引底层原理和优化手段
    mysql索引底层原理和优化手段不管业务怎么发展,数据最终都要存储到数据库中,所以数据库是必不可少的一个环节。而随着业务逐渐壮大,并发越来越高,数据库很容易成为整个链路的短板。而调优的第一步,都是从sql语句、索引入手。先得保证单个数据库执行没问题,才会有更高层次的分库......
  • SqlSugar 达梦数据库大数据量,长字符串添加,数据库为空
    SqlSugar实体添加数据时,发现字符串超过某个长度,在数据库中就空白,插入失败,原因如下:达梦Clob、Text类型用法版本需升级到5.1.4.92及以上版本//需在长字符串的属性中加入以下[SugarColumn(SqlParameterDbType=typeof(NClobPropertyConvert))]publicstringName{get;......
  • centos中docker安装mysql
    用来记录1先升级yumupdate,遇到问题,解决在上篇centos7yum报错Cannotfindavalidbaseurlforrepo:base/7/x86_642安装docker需要的工具包3配置docker的yum源位置报错,网上查询说是因为国内访问不到docker官方镜像,但是直接在网页里打开连接可以下载,换成阿里云后成......
  • postgresql 下载安装
    一、postgresql下载pg官网:postgres.org一般推荐用源码安装,下载.tar.gz包二、安装本文以12.6版本安装为例:2.1、安装前要求和环境配置#1、要求GNUmake版本3.80或以上(GNUmake有时以名字gmake安装),要测试make版本可以使用以下命令(如果是安装其他版本的pg具体要求make......