MySQL表的基本查询下/分组聚合统计
1,update
对查询到的结果进行列值更新,可以和older by,where,limit合并使用,为了方便讲解,将会以题目练习的方式进行说明:
1,将孙悟空同学的数学成绩变更为 80 分
本道题和where联用:

2,将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
一次更新多列

3,将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
这道题将联用order by和limit:

在图中可以看到,updete不支持math += 30这种写法。
4,将所有同学的语文成绩提升为原来的两倍
不用where语句就可以,但是强烈不建议这么做,改全表数据代价太大了。

2,delete
语法:
delete from + 表名,+(order by ,limit,where)语句联用
案例:
1,删除孙悟空同学的考试成绩
2,删除整张表数据
删除表的方法一定要慎重使用,表删了就没了,删之前最好做好备份:

可以看到表中的数据被删了,但是表还在。
3,截断表
语法:
truncate + 表名;
注意:这个操作慎用 1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事 物,所以无法回滚
3. 会重置 AUTO_INCREMENT 项

3,插入查询结果
语法:
INSERT INTO table_name [(column [, column ...])] SELECT 。。。;

4,聚合函数
MySQL中可以有函数,可以一组一组的来对结果做聚合统计
具体函数如下:

案例:
1,统计班级共有多少同学

也可以使用列名做统计

2,统计本次考试的数学成绩分数个数
该方法中可以引入去重:

3,统计数学成绩总分
这里使用sum函数:

可以用sum/count的方式来获取平均分:

4,统计平均总分
除了上面提供的统计平均分的方法,mysql也提供了函数avg来完成平均分的计算:

5,返回英语最高分
这里可以用到max函数来辅助完成:

6,返回 > 70 分以上的数学最低分
这可以min和where联用:

5,group by子句的使用/分组聚合统计
实际上,用到该列的不同行的数据来分组,分组的条件由用户定,组内数据一定是相同的,可被聚合压缩。
分组不就是按照条件,拆成了多个组进行各自组内的统计
换句话说就是,分组就是分表,不就是把一张表按条件在逻辑上拆成了多个子表,然后分别对各自子表进行聚合统计
在select中使用group by 子句可以对指定列进行分组查询
语法:
select column1, column2, .. from table group by column;
直接用案例来看更好看:
1,首先我们先用一个表来练习,具体代码如下:
-------------------------------------------------------------------------------------------------------------------------------
DROP database IF EXISTS `scott`;
CREATE database IF NOT EXISTS `scott` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c i;
USE `scott`;
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept` (
`deptno` int(2) unsigned zerofill NOT NULL COMMENT '部门编号',
`dname` varchar(14) DEFAULT NULL COMMENT '部门名称',
`loc` varchar(13) DEFAULT NULL COMMENT '部门所在地点'
);
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
`empno` int(6) unsigned zerofill NOT NULL COMMENT '雇员编号',
`ename` varchar(10) DEFAULT NULL COMMENT '雇员姓名',
`job` varchar(9) DEFAULT NULL COMMENT '雇员职位',
`mgr` int(4) unsigned zerofill DEFAULT NULL COMMENT '雇员领导编号',
`hiredate` datetime DEFAULT NULL COMMENT '雇佣时间',
`sal` decimal(7,2) DEFAULT NULL COMMENT '工资月薪',
`comm` decimal(7,2) DEFAULT NULL COMMENT '奖金',
`deptno` int(2) unsigned zerofill DEFAULT NULL COMMENT '部门编号'
);
DROP TABLE IF EXISTS `salgrade`;
CREATE TABLE `salgrade` (
`grade` int(11) DEFAULT NULL COMMENT '等级',
`losal` int(11) DEFAULT NULL COMMENT '此等级最低工资',
`hisal` int(11) DEFAULT NULL COMMENT '此等级最高工资'
);
insert into dept (deptno, dname, loc)
values (10, 'ACCOUNTING', 'NEW YORK');
insert into dept (deptno, dname, loc)
values (20, 'RESEARCH', 'DALLAS');
insert into dept (deptno, dname, loc)
values (30, 'SALES', 'CHICAGO');
insert into dept (deptno, dname, loc)
values (40, 'OPERATIONS', 'BOSTON');
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7369, 'SMITH', 'CLERK', 7902, '1980-12-17', 800, null, 20);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7499, 'ALLEN', 'SALESMAN', 7698, '1981-02-20', 1600, 300, 30);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7521, 'WARD', 'SALESMAN', 7698, '1981-02-22', 1250, 500, 30);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7566, 'JONES', 'MANAGER', 7839, '1981-04-02', 2975, null, 20);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7654, 'MARTIN', 'SALESMAN', 7698, '1981-09-28', 1250, 1400, 30);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7698, 'BLAKE', 'MANAGER', 7839, '1981-05-01', 2850, null, 30);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7782, 'CLARK', 'MANAGER', 7839, '1981-06-09', 2450, null, 10);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7788, 'SCOTT', 'ANALYST', 7566, '1987-04-19', 3000, null, 20);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7839, 'KING', 'PRESIDENT', null, '1981-11-17', 5000, null, 10);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7844, 'TURNER', 'SALESMAN', 7698,'1981-09-08', 1500, 0, 30);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7876, 'ADAMS', 'CLERK', 7788, '1987-05-23', 1100, null, 20);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7900, 'JAMES', 'CLERK', 7698, '1981-12-03', 950, null, 30);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7902, 'FORD', 'ANALYST', 7566, '1981-12-03', 3000, null, 20);
insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
values (7934, 'MILLER', 'CLERK', 7782, '1982-01-23', 1300, null, 10);
insert into salgrade (grade, losal, hisal) values (1, 700, 1200);
insert into salgrade (grade, losal, hisal) values (2, 1201, 1400);
insert into salgrade (grade, losal, hisal) values (3, 1401, 2000);
insert into salgrade (grade, losal, hisal) values (4, 2001, 3000);
insert into salgrade (grade, losal, hisal) values (5, 3001, 9999);
---------------------------------------------------------------------------------------------------------------------------------
2,创建好表我们可以开始练习:如何显示每个部门的平均工资和最高工资

可以看到,group by对表进行了聚合并算出来个平均和最小工资,在使用group by后指定列名的,
可以在select前直接出现,聚合函数也可在此直接出现,如果不是分组条件等等列就不能出现
group by主要用于统计,查个人最高应该用where limit,order by来查。
3,having
having关键字可以对聚合后的数据进行判断,直接看例子:
显示平均工资低于2000的部门和它的平均工资
统计各个部门的平均工资
select avg(sal) from emp group by deptno:

having和group by配合使用,对group by结果进行过滤

--having经常和group by搭配使用,作用是对分组进行筛选,作用有些像where
4,having和where的区别:
两个函数的功能基本都是一样的,那么他们的区别主要是体现在语句的执行顺序,在select中也可以用having,但是不推荐
where语句是在from执行之后就执行,而having是在所有操作结束之后再执行:

可以根据数字来看到having执行顺序:
不要单纯认为只有磁盘上的表结构导入到MySQL,真是存在表才是表,我们要人知道通过各自中间筛选,它最终结果都是逻辑上的表,无论怎么赛选,所以
MySQL一切皆表!
相关文章:
MySQL表的基本查询下/分组聚合统计
1,update 对查询到的结果进行列值更新,可以和older by,where,limit合并使用,为了方便讲解,将会以题目练习的方式进行说明: 1,将孙悟空同学的数学成绩变更为 80 分 本道题和where联…...
条款3: 理解decltype
目录 一、decltype + 变量 二、decltype + 表达式 三、decltype 使用场景 一、decltype + 变量 🥭 所有的信息都会保留,数组和函数也不会退化 const int &&carref = std::move(ca); decltype(carref) bb; // bb推导为const int &&,不会被忽略掉co…...
TCP:过多的TIME_WAIT
过多的TIME_WAIT 线上问题紧急处理方式tcp_tw_reuse启用主要特点:源码 线上问题 线上机器出现了几万个TIME_WAIT,怎么办? 紧急处理方式 tcp_tw_reuse 启用 默认情况下tcp_tw_reuse是关闭状态,使用sysctl -w net.ipv4.tcp_tw_…...
化学元素分子量、氧化物系数计算python类
在网上找到的分子量计算类,做了少量修改,有原子量、分子量、氧化物系数的计算。 import re wt_dict{ #该原子量数据从CRC手册第95版提取。"H": 1.008,"He": 4.002602,"Li": 6.94,"Be": 9.0121831,"B": 10.…...
torch.utils.data.DataLoader参数介绍
torch.utils.data.DataLoader 是 PyTorch 用于加载数据的重要工具,特别是在深度学习模型训练中。它可以高效地处理大规模数据集,并支持多线程数据加载。以下是 DataLoader 的关键参数及其功能: 主要参数 dataset: 要加载的数据集,可以是 PyTorch 自带的 torch.utils.data.…...
echarts 入门
工作中第一次碰到echarts,当时有大哥。二进宫没办法,只能搞定它。 感觉生活就是这样,不能解决的问题总是会反复出现。通过看视频、查资料,完成了工作要求。写一篇Hello World,进行备查。 基本使用 快速上手 <!DO…...
WPF实现类似网易云音乐的菜单切换
这里是借助三方UI框架实现了,感兴趣的小伙伴可以看一下。 深色模式: 浅色模式: 这里主要使用了以下三个包: MahApps.Metro:UI库,提供菜单导航和其它控件 实现步骤:1、使用B…...
OpenCV人脸检测与识别:构建智能识别系统
在当今科技日新月异的时代,人脸识别技术以其独特的便利性和安全性,在各个领域都展现出了巨大的应用潜力。从智能手机的面部解锁,到机场的自动安检,再到商场的顾客行为分析,人脸识别技术无处不在。本文将深入探讨如何使…...
H5 Canvas 举牌小人
之前看到这种的举牌小人的图片觉得很有意思,最近有时间所以就尝试写写看。 在线链接 https://linyisonger.github.io/H5.Examples/?name./080.Canvas%20%E4%B8%BE%E7%89%8C%E5%B0%8F%E4%BA%BA.html 生成效果 实现代码 <!DOCTYPE html> <html lang"…...
rom定制系列------小米6x_澎湃os1.0.28安卓13定制固件修改 刷写过程与界面预览
💝💝💝 在接待很多定制化系统过程中。小米6x机型为很多工作室客户使用。但官方低版本固件无法适应新应用的使用。有些第三方固件却可以完美解决。此固件是客户分享的卡刷固件。需要修改为可以批量刷写的线刷固件。去除一些内置应用。需要自带…...
电脑硬件性能:HDD + SSD + CPU + GPU
文章目录 任务管理器:性能参数详解一、电脑的硬件组成二、机械硬盘和固态硬盘2.1、详细介绍:HDD SSD2.2、读写性能2.2.1、(HDD)读写性能的影响因素:寻道时间 旋转延迟 数据传输时间2.2.2、(SSDÿ…...
通过粒子系统customData传值给材质球
粒子特效使用的材质球,如果通过动画控制shader的某个参数,例如溶解阈值,所有的粒子都会按照相同的数值变化,如果需要每个粒子在自己的生命周期内按照曲线变化,则可以通过customData实现。 1.ParticleSystem中勾选Cust…...
常用分布的数学期望、方差、特征函数
文章目录 相关教程相关文献常用分布的数学期望&方差&特征函数定义事件域概率条件概率随机变量分布函数连续随机变量的概率密度函数数学期望离散随机变量连续随机变量 方差与标准差最大似然估计特征函数 不等式Chebyshev(切比雪夫)不等式 作者&am…...
ssh-配置
生成 SSH 密钥是一项重要的安全措施,用于在客户端和服务器之间建立加密连接。以下是在 Windows 和 Linux 系统上生成 SSH 密钥的详细步骤。 一、在 Linux 上生成 SSH 密钥 Linux 通常预装了 ssh-keygen 工具,可以通过以下步骤生成 SSH 密钥:…...
Python 在 JMeter 中如何使用?
要在JMeter中使用Python,需要使用JSR223 Sampler元素来执行Python脚本。使用JSR223 Sampler执行Python脚本时,需要确保已在JMeter中配置了Python解释器,并设置了正确的环境路径。 1、确保JMeter已安装Python解释器,并将解释器的路…...
贪心day1
文章目录 前言雪糕的最大数量重新分装苹果装满石头的背包的最大数量K 次取反后最大化的数组和不同整数的最少数目 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫文章题目大多来自于 leetcode,当然也可能来自洛…...
Redis 完整指南:命令与原理详解
目录 1. Redis 概述什么是 RedisRedis 应用场景 2. 安装与启动Redis 安装步骤源代码安装使用包管理器安装(以 Ubuntu 为例) 编译与启动命令编客户端连接 3. Redis 存储结构KV 存储结构数据结构类型String(字符串)List(…...
【2024软考高级架构师】论文篇——3、论Web系统的测试技术及其应用
【摘要】 本人于2023年8月参与了某地级市的市级机关电子政务信息系统的建设工作,该项目是该市机关的电子政务网建设计划的一部分,笔者在该项目中担任项目经理和系统分析师一职,主要负责项目的日常全面管理和质量保证与质量控制工作。该项目是基于WEB系统的,由于WEB系统具有…...
迪杰斯特拉算法的理解
图片转载自:最短路径算法-迪杰斯特拉(Dijkstra)算法 - 程序小哥爱读书的文章 - 知乎 https://zhuanlan.zhihu.com/p/346558578 迪杰斯特拉,一个广度优先算法,采用了贪心策略。 第一步,选取顶点D,更新和D相连的节点C&a…...
华为OD机试 - 文本统计分析(Python/JS/C/C++ 2024 E卷 200分)
华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

