MySQL-day2_02

MySQL-day2

  • (四)排序
  • (五)聚合函数
    • 一、count 总记录数
    • 二、max 最大值
    • 三、min 最小值
    • 四、sum 求和
    • 五、avg 平均值
  • (六)数据分组
    • 一、分组
    • 二、分组后的数据筛选
  • (七)数据分页显示
    • 一、获取部分行
    • 二、分页


(四)排序

  • 为了方便查看数据,可以对数据进行排序;
select * from 表名;
order by 字段1 asc|desc, 字段2 asc|desc, ...
  • 将行数据按照字段1 进行排序,如果某些字段1 的值相同时,则按照字段2 排序,以此类推;
  • 默认按照字段值从小到大排序;
  • asc(默认值)从小到大排序,升序;
  • desc 从大到小排序,降序;

例1:查询所有学生记录,按 age 从小到大排序

select * from students order by age;

例2:查询所有学生记录,按 age 从大到小排序,
年龄相同时,再按 studentNo 从小到大排序。

select * from students order by age desc, studentNo asc;

在这里插入图片描述
▲ where 结合 order by:

select * from 表名 where 条件 order by 字段1, 字段2;

(五)聚合函数

为了快速得到统计数据,经常会用到如下 5 个聚合函数。
🔺注意:聚合函数不能在 where 后面的条件中使用!!!

一、count 总记录数

count(*) 表示计算总记录数,括号中写 * 与字段名,结果是相同的。

例1:查询学生总数(学生总数就是 students 表中记录的总数)

select count(*) from students;
select count(name) from students;

例2:查询性别 sex 为 ‘女’ 的学生总数

select count(*) from students where sex='女';

二、max 最大值

max(字段)表示求此字段的最大值。

例3:查询最大 age

select max(age) from students;

例4:查询性别sex 为’女’ 的最大年龄 age

select max(age) from students where sex='女';

🔺聚合函数不能在 where 后面的条件中使用。
🔺聚合函数不能与普通字段同时出现在查询结果中。

三、min 最小值

min(字段)表示求此字段的最小值。

例7:查询学生最小年龄 age

select min(age) from students;

例8:查询 class 班级为 ‘1班’ 的最小年龄 age

select min(age) from students where class='1班';

四、sum 求和

sum(字段) 表示求此字段的和。

例9:查询学生 age 年龄总和

select sum(age) from students;

例10:查询 hometown 为 ‘北京’ 的学生 age 总和

select sum(age) from students where hometown='北京';

五、avg 平均值

avg(字段) 表示求此字段的平均值。

例11:查询学生平均年龄

select avg(age) from students;

例12:查询 sex 为 ‘男’ 的平均年龄

select avg(age) from students where sex='男';

如果有null,忽略null。
比如三个年龄分别是:10,20,null
avg 计算结果是:(10+20)/2=15


(六)数据分组

一、分组

  • 按照字段分组,表示此字段相同的数据会被放到一个组中。
  • 分组的目的是配合聚合函数,聚合函数会对每一组的数据分布进行统计。
select 字段1, 字段2, 聚合函数... from 表名 group by 字段1, 字段2 ...

例1:查询各种 sex 性别的人数

select sex, count(*) from students group by sex;

在这里插入图片描述

例2:查询各年龄 age 的人数

SELECT age, count(*) from students group by age;

在这里插入图片描述

例3:分别查询 ‘1班’ 不同性别学生数量

SELECT sex, count(*) from students where class='1班' group by sex;

在这里插入图片描述

例4:用数据分组方法,统计各个班级学生总数、平均年龄、最大年龄、最小年龄。

select class,count(*),avg(age),max(age),min(age) from students group by class;

在这里插入图片描述

例5:用数据分组方法,统计各个班级学生总数、平均年龄、最大年龄、最小年龄。
但不统计 ‘3班’,统计结果按班级名称从大到小排序。

select class,count(*),avg(age),max(age),min(age) from students 
where not class='3班' group by class order by class desc;

在这里插入图片描述

二、分组后的数据筛选

select 字段1, 字段2, 聚合... from 表名
group by 字段1, 字段2, 字段3...
having 字段1,...聚合...

▲ having 后面的条件运算符与 where 的相同。

例1:使用 where 子句,查询男生总人数

select count(*) from students where sex='男';

例2:使用 having 子句,查询男生总人数

select sex, count(*) from students group by sex having sex='男';

例3:求班级人数大于3人的班级名字

select class from students group by class having count(*)>3;

例4:用 having 子句,查询除了 ‘1班’ 以外,其他各个班级学生的平均年龄、最大年龄、最小年龄;

select class, avg(age),max(age),min(age) from students
group by class having not class='1班';

★ where 和 having:

  • where是对 from 后面指定的表进行数据筛选,属于对原始数据的筛选;
  • having是对 group by 的结果进行筛选;
  • having 后面的条件中可以用聚合函数,where后面的条件不可以使用聚合函数。

练习1:查询班级总人数大于2人的班级名称以及班级对应的总人数。

SELECT class, count(*) from students group by class 
having count(*)>2;

在这里插入图片描述
练习2:查询平均年龄大于30岁id班级名称和班级总人数。

select class,count(*),avg(age) from students 
group by class having avg(age)>30;

在这里插入图片描述


(七)数据分页显示

一、获取部分行

当数据量过大时,在一页中查看数据是一件非常麻烦的事情。

语法:limit 开始行, 获取行数;

select * from 表名 limit start, count
  • 从 start 开始,获取 count 条数据;
  • start 索引从 0 开始,如省略 start 默认从 0 开始。

例1:查询前 3 行学生记录。

select * from students limit 0,3;

在这里插入图片描述

例2:省略 start ,查询前 5 行学生记录

select * from students limit 5;

在这里插入图片描述

例3:查询从第 4 行开始的 3 条学生记录

select * from students limit 3,3;

在这里插入图片描述

例4:查询年龄最大的同学的name

select name from students order by age desc limit 1;

例5:查询年龄最小的女同学信息

select * from students where sex='女' order by age limit 1;

二、分页

当一张表记录特别多的时候,就需要用到分页显示。

已知:每页显示 m 条数据,求:查询第 n 页的数据。

select * from students limit (n-1)*m,m

例1:每页显示 4 条记录,查询第 3 页的数据。
m = 4,n = 3;
(n-1)*m = (3-1)*4 = 8;

select * from students limit 8,4;

在这里插入图片描述

例2:查询 students 表,每页显示 5 条记录,求总页数。

  1. 查询记录总条数 a;
  2. 使用 a 除以每页显示条数 5,得到 b;
  3. 如果 b 为整数,则 b 为总页数。
  4. 如果 b 不为整数,则 b+1 为总页数。
操作说明
第一步select count(*) from students得到 students 表的总条数,结果为:12
第二步12 / 5 = 2.4不能整除
第三步2 + 1 = 3总页数为 3 页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96537.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS应用开发:深入ArkUI声明式开发范式与最佳实践

HarmonyOS应用开发:深入ArkUI声明式开发范式与最佳实践 引言 随着HarmonyOS 4.0的发布及API 12的推出,华为的分布式操作系统进入了全新的发展阶段。ArkUI作为HarmonyOS应用开发的核心框架,其声明式开发范式(Declarative Paradigm&…

Claude-Flow AI协同开发:钩子系统与 GitHub 集成

5.1 思维认知框架:从“开发助手”到“DevOps 智能体” 在此之前,我们将 Claude-Flow 视为一个强大的 “开发助手 (Development Assistant)” ,它在编码、测试、重构等环节为我们提供支持。现在,我们需要再次进行思维升级&#xff…

DigitalOcean Kubernetes 现已支持 Gateway API 托管服务

在 DigitalOcean Kubernetes 集群中管理流量,一直以来主要依赖 Ingress。虽然能满足基本需求,但在灵活性、角色分离和高级路由方面仍存在局限。今天,我们很高兴迎来新的改变。 我们正式宣布,Kubernetes Gateway API 托管服务现已…

聚铭网络入选数世咨询《中国数字安全价值图谱》“日志审计”推荐企业

近日,国内知名数字安全咨询机构数世咨询正式发布《中国数字安全价值图谱》。聚铭网络凭借领先的技术实力与出色的市场表现,成功入选“日志审计”领域重点推荐企业,彰显了在该赛道的专业认可与品牌影响力。关于《中国数字安全价值图谱》 在当下…

豆包、Kimi、通义千问、DeepSeek、Gamma、墨刀 AI”六款主流大模型(或 AI 平台)生成 PPT 的完整流程

、先厘清 3 个概念,少走弯路大模型 ≠ PPT 软件豆包、Kimi、通义千问、DeepSeek 本身只负责“出大纲/出文案”,真正的“一键配图排版”要靠官方 PPT 助手或第三方平台(博思 AiPPT、迅捷 AiPPT、Gamma、墨刀 AI 等)。两条主流技术路…

Redis哈希(Hash):适合存储对象的数据结构,优势与坑点解析

Redis哈希(Hash):适合存储对象的数据结构,优势与坑点解析 1. Redis哈希概述 1.1 什么是Redis哈希 Redis哈希(Hash)是一种映射类型(Map),由多个字段值对(fi…

Python的uv包管理工具使用

一、简介 uv是一个继Python版本管理、Python包管理、项目管理、虚拟环境管理于一体的工具,由于底层是用Rust编写的,uv的执行速度非常快。 安装 pip install uv镜像源设置 uv默认安装包是从pypi上下载的,速度比较慢。我们可以设置镜像源&#…

JavaScript事件机制与性能优化:防抖 / 节流 / 事件委托 / Passive Event Listeners 全解析

目标:把“为什么慢、卡顿从哪来、该怎么写”一次说清。本文先讲事件传播与主线程瓶颈,再给出四件法宝(防抖、节流、事件委托、被动监听),最后用一套可复制的工具函数 清单收尾。1)先理解“为什么会卡”&am…

【Chrome】chrome 调试工具的network选项卡,如何同时过滤出doc js css

通过类型按钮快速筛选(更直观)在 Network 选项卡中,找到顶部的 资源类型按钮栏(通常在过滤器搜索框下方)。按住 Ctrl 键(Windows/Linux)或 Command 键(Mac),同…

Elasticsearch (ES)相关

在ES中,已经有Term Index,那还会走倒排索引吗 你这个问题问得很到位 👍。我们分清楚 Term Index 和 倒排索引 在 Elasticsearch (ES) 里的关系:1. 倒排索引(Inverted Index) 是 Lucene/ES 检索的核心。文档…

pre-commit run --all-files 报错:http.client.RemoteDisconnected

报错完整信息初步原因是这样 报错是 Python 的 http.client.RemoteDisconnected,意思是 在用 urllib 请求远程 URL 时,远程服务器直接断开了连接,没有返回任何响应。在你的堆栈里,它出现在 pre-commit 尝试安装 Golang 环境的时候…

【C++】STL·List

1. list的介绍及使用 1.1list介绍 List文档介绍 1.2 list的使用 list中的接口比较多,此处类似,只需要掌握如何正确的使用,然后再去深入研究背后的原理,已 达到可扩展的能力。以下为list中一些常见的重要接口。 1.2.1 list的构造…

图论2 图的数据结构表示

目录 一 图的数据结构表示 1 邻接矩阵(Adjacency Matrix) 2 邻接表(Adjacency List) 3 边列表(Edge List) 4 十字链表(Orthogonal List / Cross-linked List, 十字链表) 5 邻接…

在Excel中删除大量间隔空白行

在 Excel 中删除大量间隔空白行,可使用定位空值功能来快速实现。以下是具体方法:首先,选中包含空白行的数据区域。可以通过点击数据区域的左上角单元格,然后按住鼠标左键拖动到右下角最后一个单元格来实现。接着,按下快…

【C 学习】10-循环结构

“知道做不到就是不知道”一、条件循环1. while只要条件为真&#xff08;true&#xff09;&#xff0c;就会重复执行循环体内的代码。while (条件) {// 循环体&#xff08;要重复执行的代码&#xff09; }//示例 int i 1; while (i < 5) {printf("%d\n", i);i; …

音视频的下一站:协议编排、低时延工程与国标移动化接入的系统实践

一、引言&#xff1a;音视频的基础设施化 过去十年&#xff0c;音视频的两条主线清晰可辨&#xff1a; 娱乐驱动&#xff1a;直播、电商、短视频把“实时观看与互动”变成高频日常。 行业扩展&#xff1a;教育、会议、安防、政务逐步把“可用、可管、可控”引入产业系统。 …

SAM-Med3D:面向三维医疗体数据的通用分割模型(文献精读)

1) 深入剖析:核心方法与图示(Figure)逐一对应 1.1 单点三维提示的任务设定(Figure 1) 论文首先将3D交互式分割的提示形式从“2D逐片(每片1点,共N点)”切换为“体素级单点(1个3D点)”。Figure 1直观对比了 SAM(2D)/SAM-Med2D 与 SAM-Med3D(1点/体) 的差异:前两者…

【Spring】原理解析:Spring Boot 自动配置进阶探索与优化策略

一、引言在上一篇文章中&#xff0c;我们对 Spring Boot 自动配置的基本原理和核心机制进行了详细的分析。本文将进一步深入探索 Spring Boot 自动配置的高级特性&#xff0c;包括如何进行自定义扩展、优化自动配置的性能&#xff0c;以及在实际项目中的应用优化策略。同时&…

OpenCV:图像直方图

目录 一、什么是图像直方图&#xff1f; 关键概念&#xff1a;BINS&#xff08;区间&#xff09; 二、直方图的核心作用 三、OpenCV 计算直方图&#xff1a;calcHist 函数详解 1. 函数语法与参数解析 2. 基础实战&#xff1a;计算灰度图直方图 代码实现 结果分析 3. 进…

docke笔记下篇

本地镜像发布到阿里云 本地镜像发布到阿里云流程 镜像的生成方法 基于当前容器创建一个新的镜像&#xff0c;新功能增强 docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]] OPTIONS说明&#xff1a; OPTIONS说明&#xff1a; -a :提交的镜像作者&#xff1b; -m :提交时的说…