MYSQL学习笔记(六):聚合函数、sql语句执行原理简要分析
前言:
- 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇+,涵盖入门、进阶、高级(一些原理分析);
- 这一篇是内容较少,主要讲解:聚合函数和简要介绍sql语句执行过程;
- 虽然MYSQL命令很多,但是自己去多敲一点,到后面忘记了,查一下就可以回忆起来使用了;
- 这一系列也是本人学习MYSQL做的笔记,也是为了方便后面忘记查询;
- 参考资料:尚硅谷、黑马、csdn和知乎博客;
- 欢迎收藏 + 关注,本人将会持续更新。
文章目录
- 聚合函数(统计函数)
- MYSQL的运行顺序
课程使用数据文件: 后台私信获取。
聚合函数(统计函数)
SQL 允许对表中的数据进行计算,将一列数据作为一个整体,进行纵向计算。
| 函数名 | 作用 |
|---|---|
| MAX(column) | 返回某列的最低值(没有则返回NULL) |
| MIN(column) | 返回某列的最高值(没有则返回NULL) |
| COUNT(column) | 返回某列的行数(不包括 NULL 值) |
| COUNT(*) | 返回被选列行数(包括NULL) |
| SUM(column) | 求和 |
| AVG(column) | 求平均值 |
👁 注意:
- 其中 COUNT 函数可用于任何数据类型 (因为它只是计数)
- 而 SUM 、AVG 函数都只能对数值类型做计算
- MAX 和 MIN 可用于数值、字符串或是日期时间数据类型。
- 统计该企业员工数量
mysql> select count(ename) from emp;
+--------------+
| count(ename) |
+--------------+
| 15 |
+--------------+
1 row in set (0.02 sec)
- 统计该企业员工的平均工资
mysql> select avg(sal) from emp;
+-----------+
| avg(sal) |
+-----------+
| 1988.3333 |
+-----------+
1 row in set (0.00 sec)
- 查询该企业员工的最高工资
mysql> select max(sal) from emp;
+----------+
| max(sal) |
+----------+
| 5000 |
+----------+
1 row in set (0.00 sec)
- 查询该企业员工的最低工资
mysql> select min(sal) from emp;
+----------+
| min(sal) |
+----------+
| 800 |
+----------+
1 row in set (0.00 sec)
- 计算所有销售的工资之和
mysql> select sum(sal) from emp where job='SALESMAN';
+----------+
| sum(sal) |
+----------+
| 5600 |
+----------+
1 row in set (0.00 sec)
MYSQL的运行顺序
MYSQL中常见的关键字段如下:
- from:从哪些表中筛选;
- on:关联多表查询时,去除笛卡尔积;
- where:从表中筛选的条件;
- group by:分组依据;
- having:在统计结果中再次筛选;
- order by:排序;
- limit:分页。
这些在MYSQL中执行顺序是不一样的,从书写顺序来看:
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT...
👀 注意: 这些顺序不能颠倒。
在MYSQL执行语句过程中,sql执行顺序是:
FROM ...,...-> ON -> (LEFT/RIGNT JOIN) -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT
具体sql执行原理:
- SELECT 是先执行 FROM 这一步的。在这个阶段,如果是多张表联查,还会经历下面的几个步骤:
- 首先笛卡尔积,相当于得到虚拟表 vt(virtual table)1-1;
- 通过 ON 进行筛选,在虚拟表 vt1-1 的基础上进行筛选,得到虚拟表 vt1-2;
- 添加外部行,如果我们使用的是左连接、右链接或者全连接,就会涉及到外部行,也就是在虚拟表 vt1-2 的基础上增加外部行,得到虚拟表 vt1-3。
当然如果我们操作的是两张以上的表,还会重复上面的步骤,直到所有表都被处理完为止,这个过程得到是我们的原始数据。
- 原始数据得到后,在经过
where进一步判断,得到新一张虚拟表; - 然后在经过group by、having,又得到新一张虚拟表;
- 接着就是select、distinct,当然这个时候依然会生产虚拟表;
- order by、limit也都会各自生成新的虚拟表。
相关文章:
MYSQL学习笔记(六):聚合函数、sql语句执行原理简要分析
前言: 学习和使用数据库可以说是程序员必须具备能力,这里将更新关于MYSQL的使用讲解,大概应该会更新30篇,涵盖入门、进阶、高级(一些原理分析);这一篇是内容较少,主要讲解:聚合函数和简要介绍sql语句执行过…...
thinkphp6+swoole使用rabbitMq队列
安装think-swoole安装 composer require php-amqplib/php-amqplib,以支持rabbitMq使用安装rabbitMq延迟队列插件 安装 rabbitmq_delayed_message_exchange 插件,按照以下步骤操作: 下载插件:https://github.com/rabbitmq/rabbitmq-delayed-…...
大模型开发 | RAG在实际开发中可能遇到的坑
近年来,大语言模型 (LLM) 的飞速发展令人瞩目,它们在各个领域展现出强大的应用潜力。然而,LLM 也存在一些固有的局限性,例如知识更新滞后、信息编造 (幻觉) 等问题。为了克服这些挑战,检索增强生成 (Retrieval-Augment…...
mybatis是什么?有什么作用?mybatis的简单使用
mybatis是什么? MyBatis 是一个持久层框架。 有什么作用? 简化了对数据库数据的操作。 如何简化数据操作的? MyBatis 通过提供 SQL 映射、动态 SQL、结果映射、事务管理等功能,我们直接去用就可以了。 怎么使用?&…...
求平均年龄(信息学奥赛一本通-1059)
【题目描述】 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。 【输入】 第一行有一个整数n(1≤n≤100),表示学生的人数。其后n行每行有…...
CY T 4 BB 5 CEB Q 1 A EE GS MCAL配置 - MCU组件
1、ResourceM 配置 选择芯片信号: 2、MCU 配置 2.1 General配置 1) McuDevErrorDetect: - 启用或禁用MCU驱动程序模块的开发错误通知功能。 - 注意:采用DET错误检测机制作为安全机制(故障检测)时,不能禁用开发错误检测。2) McuGetRamStateApi - enable/disable th…...
10 Hyperledger Fabric 介绍
简介 HypeLedger(超级账本)是由Linux基金会2015年创建的首个面向企业应用场景的开源分布式账本平台。 HypeLedger Fabric是HypeLedger种的区块链项目之一HypeLedger Fabric引入权限管理在架构设计上支持可插拔、可扩展是首个面向联盟链场景的开源项目 …...
Word 中实现方框内点击自动打 √ ☑
注: 本文为 “Word 中方框内点击打 √ ☑ / 打 ☒” 相关文章合辑。 对第一篇增加了打叉部分,第二篇为第一篇中方法 5 “控件” 实现的详解。 在 Word 方框内打 √ 的 6 种技巧 2020-03-09 12:38 使用 Word 制作一些调查表、检查表等,通常…...
噪声算法 纹理
噪声是一种程序生成的随机或伪随机数据,在图形学中常用来创建各种自然现象和复杂纹理效果。 它的本质是一种由数学算法公式生成的有规则性或可控的随机数据。 通过噪声算法生成的随机数据具有以下特点: 随机性:噪声数据本质上是随机的&#…...
hexo + Butterfly搭建博客
Hexo是一个基于Node.js的静态网站生成器,主要用于快速搭建博客和个人网站。它使用Markdown语法编写文章,能够迅速生成静态页面并部署到服务器上。 配置node 使用nvm安装node(v16.13.2)后配置镜像 安装并使用node: nvm install 16.13.2 n…...
05.KNN算法总结
KNN算法总结 1 k近邻算法优缺点汇总 优点: 简单有效重新训练的代价低适合类域交叉样本 KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适…...
CentOS 7 搭建lsyncd实现文件实时同步 —— 筑梦之路
在 CentOS 7 上搭建 lsyncd(Live Syncing Daemon)以实现文件的实时同步,可以按照以下步骤进行操作。lsyncd 是一个基于 inotify 的轻量级实时同步工具,支持本地和远程同步。以下是详细的安装和配置步骤: 1. 系统准备 …...
java定时任务备份数据库
文章目录 前言一、定时任务备份二、分享两个windows运行项目脚本总结 前言 数据库备份 程序中数据库备份可以有效避免因为意外,导致数据丢失,因此数据备份显得尤为重要。 一、定时任务备份 定时任务类,要在配置类或启动类开启 EnableScheduling Data Sl4j Servic…...
Vue.js 传递路由参数和查询参数
Vue.js 传递路由参数和查询参数 在 Vue.js 开发中,Vue Router 提供了灵活的方式来处理路由参数和查询参数,使得组件能够根据不同的路径或查询条件渲染相应的内容。 路由参数 路由参数(也称为路径参数)是 URL 路径的一部分&…...
2025数学建模美赛|F题成品论文
国家安全政策与网络安全 摘要 随着互联网技术的迅猛发展,网络犯罪问题已成为全球网络安全中的重要研究课题,且网络犯罪的形式和影响日益复杂和严重。本文针对网络犯罪中的问题,基于多元回归分析和差异中的差异(DiD)思…...
私有包上传maven私有仓库nexus-2.9.2
一、上传 二、获取相应文件 三、最后修改自己的pom文件...
企业信息化4:免费开源的财务管理系统
前言: 一个完整的财务管理系统不局限于传统的记账和核算工具,而是一整套包含了公司财务战略规划制订、编制各种财务计划、预算管理、资金管理、资产管理、税务管理的完整解决方案,从而实现对公司整体经营状况进行财务分析并定期汇报ÿ…...
PyCharm配置Python环境
1、打开PyCharm项目 可以从File-->Open-->选择你的项目路径-->OK,或者直接点击Open,找到项目路径-->OK,如图所示(点击Ok后可能有下面的弹窗,选择“Trust Project”即可,然后选择“New Window”打开项目) …...
蓝桥杯3522 互质数的个数 | 数论
题目传送门 首先根据a^b得出需要使用欧拉函数φ,根据欧拉函数的性质: φ ( a b ) a b − 1 ∗ φ ( a ) φ ( n ) n ∗ ( 1 − 1 / p 1 ) ∗ ( 1 − 1 / p 2 ) ∗ . . . ∗ ( 1 − 1 / p k ) ,其中 p i 为 n 的质因数 φ(a^b)a^{b-1}*φ(…...
Effective C++ 规则49:了解 new-handler 的行为
1、背景 在 C 中,new 运算符用于动态分配内存。然而,当内存分配失败时,程序默认会抛出一个 std::bad_alloc 异常。为了更灵活地处理这种情况,C 提供了一种机制,允许开发者自定义内存分配失败时的行为。这就是 new-han…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
