当前位置: 首页 > news >正文

【MySQL | 第四篇】区分SQL语句的书写和执行顺序

在这里插入图片描述

文章目录

  • 4.区分SQL语句的书写和执行顺序
    • 4.1书写顺序
    • 4.2执行顺序
    • 4.3总结
    • 4.4扩充:辨别having与where的异同?
    • 4.5聚合查询

4.区分SQL语句的书写和执行顺序

注意:SQL 语句的书写顺序与执行顺序不是一致的

4.1书写顺序

SELECT <字段名> 
FROM <表名>
JOIN <表名> 
ON <连接条件>
WHERE <筛选条件>
GROUP BY <字段名>
HAVING <筛选条件> #根据group by选择的字段,进行条件筛选
UNION
ORDER BY <字段名>
LIMIT <限制行数>;

4.2执行顺序

  1. FORM:选择from后面跟的表,产生虚拟表1。
  2. ON:ON是JOIN的连接条件,符合连接条件的行会被记录在虚拟表2中。
  3. JOIN:如果指定了LEFT JOIN,那么保留表中未匹配的行就会作为外部行添加到虚拟表2中,产生虚拟表3。如果有多个JOIN链接,会重复执行步骤1~3,直到处理完所有表。
  4. WHERE:对虚拟表3进行WHERE条件过滤,符合条件的记录会被插入到虚拟表4中。
  5. GROUP BY:根据GROUP BY子句中的列,对虚拟表2中的记录进行分组操作,产生虚拟表5。
  6. HAVING:对虚拟表5进行HAVING过滤,符合条件的记录会被插入到虚拟表6中。
  7. SELECT:SELECT到一步才执行,选择指定的列,插入到虚拟表7中。
  8. UNION:UNION连接的两个SELECT查询语句,会重复执行步骤1~7,产生两个虚拟表7,UNION会将这些记录合并到虚拟表8中。
  9. ORDER BY: 将虚拟表8中的记录进行排序,虚拟表9。
  10. LIMIT:取出指定行的记录,返回结果集。

4.3总结

书写顺序:SELECT -> FROM -> JOIN -> ON -> WHERE -> GROUP BY -> HAVING -> UNION -> ORDER BY ->LIMIT

执行顺序:FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> UNION -> ORDER BY ->LIMIT

4.4扩充:辨别having与where的异同?

  • 相同:两者都是用作筛选条件
  • 不同:
    • 书写和执行顺序不同
      • having:书写在、执行在分组操作之后,对分组后的数据进行过滤.(临时数据表进行过滤)
      • where:分组操作执行前, 对分组前的数据 只能使用表原始列进行条件过滤(真实数据表进行过滤)
    • 使用聚合函数不同
      • having:后面可以使用聚合函数
      • where:后面不可以使用聚合函数

分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件

  • 举例:
#统计各个分类商品的个数
select category_id,count(pid) from product group by category_id;#统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id,count(pid) from product GROUP BY category_id HAVING count(*)>1;#统计价格>200元的 各个分类商品的个数,且只显示个数大于1的信息
select category_id,count(pid) from product where price>200 group by category_id HAVING count(pid)>1;

4.5聚合查询

  • 常用的五个聚合函数

    • count(列名):统计指定列不为NULL的记录行数;

    • sum(列名):计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

    • max(列名):计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

    • min(列名):计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

    • avg(列名):计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
      在这里插入图片描述

相关文章:

【MySQL | 第四篇】区分SQL语句的书写和执行顺序

文章目录 4.区分SQL语句的书写和执行顺序4.1书写顺序4.2执行顺序4.3总结4.4扩充&#xff1a;辨别having与where的异同&#xff1f;4.5聚合查询 4.区分SQL语句的书写和执行顺序 注意&#xff1a;SQL 语句的书写顺序与执行顺序不是一致的 4.1书写顺序 SELECT <字段名> …...

服务器又被挖矿记录

写在前面 23年11月的时候我写过一篇记录服务器被挖矿的情况&#xff0c;点我查看。当时是在桌面看到了bash进程CPU占用异常发现了服务器被挖矿。 而过了几个月没想到又被攻击&#xff0c;这次比上次攻击手段要更高明点&#xff0c;在这记录下吧。 发现过程 服务器用的是4090…...

嵌入式学习day34 网络

TCP包头: 1.序号:发送端发送数据包的编号 2.确认号:已经确认接收到的数据的编号(只有当ACK为1时,确认号才有用) TCP为什么安全可靠: 1.在通信前建立三次握手连接 SYN SYNACK ACK 2.在通信过程中通过序列号和确认号保障数据传输的完整性 本次发送序列号:上次…...

欧科云链:角力Web3.0,香港如何为合规设线?

在香港拥抱Web3.0的过程中,以欧科云链为代表的合规科技企业将凸显更大重要性。 ——据香港商报网报道 据香港明报、商报等媒体报道&#xff0c;港区全国政协兼香港选委界立法会议员吴杰庄在日前召开的全国两会上提出在大湾区建设国际中小企业创新Web3融资平台等提案&#xff0…...

Android SDK2 (实操三个小目标)

书接上回&#xff1a;Android SDK 1&#xff08;概览&#xff09;-CSDN博客 今天讲讲三个实际练手内容&#xff0c;用的是瑞星微的sdk。 1 实操编译Android.bp 首先还是感叹下&#xff0c;现在的系统真的越搞越复杂&#xff0c;最早只有gcc&#xff0c;后面多了make&#xf…...

数字编码与字符编码:解锁编程世界的基石

在计算机的世界里&#xff0c;一切信息都是以数字的形式存在。但是&#xff0c;你有没有想过&#xff0c;我们是如何在这个由0和1构成的数字世界中表示复杂的信息&#xff0c;如文本、图像和声音的呢&#xff1f;本篇文章将带你深入探索数字编码与字符编码的奥秘&#xff0c;它…...

C语言-写一个简单的Web服务器(一)

基于TCP的web服务器 概述 C语言可以干大事&#xff0c;我们基于C语言可以完成一个简易的Web服务器。当你能够自行完成web服务器&#xff0c;你会对C语言有更深入的理解。对于网络编程&#xff0c;字符串的使用&#xff0c;文件使用等等都会有很大的提高。 关于网络的TCP协议在…...

MySQL底层原理

1. 请解释MySQL的逻辑架构和物理架构。 MySQL的逻辑架构和物理架构涉及到多个层面&#xff0c;包括网络连接、服务处理、存储引擎以及数据存储等部分。具体如下&#xff1a; 逻辑架构&#xff1a; 连接层&#xff08;Connection Layer&#xff09;&#xff1a;客户端通过TCP…...

复盘-word

word-大学生网络创业交流会 设置段落&#xff0c;段后行距才有分 word-选中左边几行字进行操作 按住alt键进行选中 word复制excel随excel改变&#xff08;选择性粘贴&#xff09; 页边距为普通页边距定义 ##### word 在内容控件里面填文字&#xff08;调属性&#xff09…...

Vue中的组件:构建现代Web应用的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

【从部署服务器到安装autodock vina】

注意&#xff1a;服务器 linux系统选用ubuntu 登录系统&#xff0c;如果没有图形化见面可以先安装图形化界面 可以参考该视频 --> linux安装图形化界面 非阿里云ubuntu 依次执行以下命令 sudo apt-get update sudo apt-get install gnome sudo reboot阿里云ubuntu 需多执…...

如何使用ArcGIS Pro进行坡度分析

坡度分析是地理信息系统中一种常见的空间分析方法&#xff0c;用于计算地表或地形的坡度&#xff0c;这里为大家介绍一下如何使用ArcGIS Pro进行坡度分析&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据&#xff0c;除了DEM数据&…...

Vue3.2 + vue/cli-service 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案

chunk-vendors.js 是/node_modules 目录下的所有模块打包成的包&#xff0c; 但是这包太大导致页面加载很慢&#xff08;我的都要3-4秒了&#xff09;&#xff0c; 这个时候就会出现白屏的情况 解决方案 1、compression-webpack-plugin 插件解决方案 1&#xff09;、安装 npm …...

Java学习笔记NO.18

T1.理工超市 &#xff08;1&#xff09;题目描述 编写一个程序&#xff0c;设计理工超市功能菜单并完成注册和登录功能的实现。显示完菜单后&#xff0c;提示用户输入菜单项序号。当用户输入<注册>和<登录>菜单序号时模拟完成注册和登录功能&#xff0c;最后提示…...

【JVM】聊聊垃圾回收之三色标记算法

在垃圾收集器 CMS中存在四个阶段&#xff0c;初始标记、并发标记、重新标记、并发清理。 那么在并发标记中由于没有STW&#xff0c;业务程序和GC程序是并发执行的&#xff0c;那么是如何实现对象的并发标记的。 并发垃圾回收 并发标记其实是一个宏观的过程&#xff0c;仍然需…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Image)

Image为图片组件&#xff0c;常用于在应用中显示图片。Image支持加载PixelMap、ResourceStr和DrawableDescriptor类型的数据源&#xff0c;支持png、jpg、jpeg、bmp、svg、webp和gif类型的图片格式。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&am…...

华为OD面试分享8(2024年)

个人情况&#xff1a; 23毕业&#xff0c;24一战跨考ustc&#xff0c;觉G。 211本&#xff0c;目标院校。 知识储备&#xff1a; 仅限408 用leetcode刷过408排序算法 0项目经验 时间线&#xff1a; 23.12.27 投的简历。当时啥也不会啥也不知道&#xff0c;听入职的同学说…...

Java的堆如何分代的?

前言&#xff1a; java对象一般都是朝生夕死&#xff0c;也有部分对象是一直存在的。两种对象如何都放在一起&#xff0c;进行垃圾回收的时候效率较低。所以通过将不同时期的对象放在不同的内存池中&#xff0c;节省垃圾回收的时间&#xff0c;提高性能。 组成&#xff1a; 新生…...

C# CallerMemberName、CallerFilePath、CallerLineNumber

CallerMemberName&#xff1a;调用某个方法的主方法名称 CallerFilePath&#xff1a;调用某个方法的主方法所在的类文件地址 CallerLineNumber&#xff1a;调用这个方法所在的行号 用这三个附加属性&#xff0c;需要设置默认值。...

Claude3系统解读与使用测评

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

Rocky Linux 9.2网络配置与本地yum源搭建实战指南

1. Rocky Linux 9.2网络配置实战 Rocky Linux作为RHEL的替代品&#xff0c;在企业级应用中越来越受欢迎。最近我在部署一套内部测试环境时&#xff0c;发现很多新手对Rocky Linux 9.2的网络配置存在困惑。下面我就把实际踩坑后验证过的最可靠配置方法分享给大家。 1.1 网卡配置…...

SQL统计各分组中排名前三的记录_使用窗口函数RANK

RANK() 遇相同值并列且跳号&#xff0c;如三个第1名后直接第4名&#xff1b;若仅用 WHERE rank ≤ 3 过滤&#xff0c;会漏掉并列第3名之后实际应入选的并列名次&#xff0c;导致结果偏少而非偏多——题干“多出几条”通常源于误将 RANK() 与 ROW_NUMBER() 混淆或未正确处理分组…...

Go 微服务性能税深度实战:从 goroutine、channel 到生产级高并发架构

Go 微服务性能税深度实战:从 goroutine、channel 到生产级高并发架构 很多 Go 微服务的性能问题,并不是“代码写得不够 Go”,而是团队在并发模型、调用链架构、对象生命周期、连接池治理和容量设计上,持续为“看起来优雅”的实现支付隐藏成本。本文不讨论玩具级 benchmark,…...

STM32 RTC实战:从零构建高精度实时时钟系统

1. STM32 RTC模块基础入门 第一次接触STM32的RTC功能时&#xff0c;我完全被那些专业术语搞晕了。什么BCD码、影子寄存器、异步预分频...听起来就像天书一样。但实际用起来才发现&#xff0c;这玩意儿就是个高级版的电子表&#xff0c;只不过能集成到你的电路板里。 RTC全称是R…...

AI大模型如何重塑金融行业?智能客服、知识库、营销助手…看这篇就够了!

当前&#xff0c;AI大模型正深刻重塑金融行业。在业务场景中&#xff0c;其价值已从技术探索走向规模化落地。智能投顾领域&#xff0c;大模型通过分析海量市场数据与用户画像&#xff0c;生成个性化资产配置方案&#xff0c;服务效率提升超50%&#xff1b;信贷风控环节&#x…...

AudioSeal Pixel Studio快速上手:Streamlit本地启动+模型缓存路径配置指南

AudioSeal Pixel Studio快速上手&#xff1a;Streamlit本地启动模型缓存路径配置指南 1. 工具简介 AudioSeal Pixel Studio 是一款基于Meta开源的AudioSeal算法构建的专业音频水印工具。它能够在保持原始音频质量的前提下&#xff0c;为音频文件嵌入几乎不可察觉的数字水印&a…...

STK 12.10.0实战:用Python脚本自动化RF Channel Modeler,提升雷达仿真效率

STK 12.10.0实战&#xff1a;用Python脚本自动化RF Channel Modeler&#xff0c;提升雷达仿真效率 在卫星通信系统设计和雷达性能评估领域&#xff0c;仿真效率往往直接决定项目周期和研发成本。传统STK图形界面操作虽然直观&#xff0c;但在处理批量参数扫描、复杂场景迭代时&…...

5分钟掌握3D模型体积计算:STL文件分析完全指南

5分钟掌握3D模型体积计算&#xff1a;STL文件分析完全指南 【免费下载链接】STL-Volume-Model-Calculator STL Volume Model Calculator Python 项目地址: https://gitcode.com/gh_mirrors/st/STL-Volume-Model-Calculator 你是否曾经需要快速估算3D打印模型的材料用量&…...

告别复制粘贴!深入理解GD32F407的GPIO配置:推挽、开漏、复用AF到底怎么选?

GD32F407 GPIO配置实战指南&#xff1a;从模式选择到外设驱动 在嵌入式开发中&#xff0c;GPIO&#xff08;通用输入输出&#xff09;是最基础却最容易被低估的模块。很多开发者习惯性地复制粘贴GPIO配置代码&#xff0c;却对推挽输出、开漏输出、复用功能等模式的选择依据一知…...

大族打标机 TCP 工具类优先设计 + 追溯打标业务落地

本文按工程实施顺序组织&#xff1a;大族 TCP 客户端工具类源码&#xff1b;追溯打标业务源码&#xff1b;IP、端口、模板名动态配置方案&#xff08;含建表 SQL&#xff09;。一、大族打标机 TCP 工具类1.1 协议约定大族打标常见指令&#xff08;ASCII&#xff09;&#xff1a…...