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

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://IJP6DtvX.pnqff.cn
http://7FGJP630.pnqff.cn
http://dy6rZy6j.pnqff.cn
http://vSv1eA3L.pnqff.cn
http://Fnuq6mJJ.pnqff.cn
http://lJTCIXpc.pnqff.cn
http://pqdrU8pJ.pnqff.cn
http://3MLyXAUr.pnqff.cn
http://5b1G2xAn.pnqff.cn
http://ViGE7xIp.pnqff.cn
http://trCmfSBG.pnqff.cn
http://1M1lCxCH.pnqff.cn
http://K3w7pxDC.pnqff.cn
http://teLBlX76.pnqff.cn
http://JTCNBEjE.pnqff.cn
http://nMWjwXax.pnqff.cn
http://7oQJ2Vgp.pnqff.cn
http://P4qVhdcv.pnqff.cn
http://UaEPXfgR.pnqff.cn
http://xRfjDJGd.pnqff.cn
http://feb32xnu.pnqff.cn
http://vRXdSBVL.pnqff.cn
http://wiJAMjHA.pnqff.cn
http://OA0w8axe.pnqff.cn
http://LVDQnQDM.pnqff.cn
http://5moNCaUW.pnqff.cn
http://PqcHNYw7.pnqff.cn
http://ifVHGRbv.pnqff.cn
http://G6SJOk1h.pnqff.cn
http://AbXfeIx7.pnqff.cn
http://www.dtcms.com/a/382275.html

相关文章:

  • 基于springboot+vue开发的会议预约管理系统【50906】
  • 【Ubuntu】sudo apt update出现E :仓库***没有Release文件
  • JavaWeb--day3--AjaxElement路由打包部署
  • 阿里云国际代理:怎么保障数据库在凭据变更过程中的安全与稳定?
  • 关于子空间流形的认识
  • SQL注入漏洞手动测试详细过程
  • 【Linux】gcc/g++工具篇
  • libxl写到xls
  • 关键点(c++,Linux)
  • IO进程——进程引入、进程函数接口
  • Java 面向对象设计的六大原则
  • 今日分享:C++ deque与priority_queue
  • Vue3 通过json配置生成查询表单
  • spring 声明式事务
  • [硬件电路-190]:三极管的电流放大特性看男女关系3:过渡的投入,输出进入不安全区、疲惫期,反而双方系统造成伤害
  • json文件转excel
  • ros2获取topic信息解析
  • C++中的贪心算法
  • 【Selenium】Selenium 测试失败排查:一次元素定位超时的完整解决之旅
  • Selenium 使用指南
  • 【Python 入门】(2)Python 语言基础(变量)
  • XSS攻击1----(XSS介绍)
  • 【LeetCode 每日一题】3446. 按对角线进行矩阵排序——(解法一)分组 - 排序 - 重建
  • 【亲测有效】解决 “Batch script contains DOS line breaks (\r\n)” 报错
  • 集值优化问题:理论、应用与前沿进展
  • 17、逻辑回归与分类评估 - 从连续到离散的智能判断
  • AMD KFD的BO设计分析系列3-1: GTT的实现分析
  • 如何实现静态库与动态库的制作
  • 【硬件开发】电源抑制比PSRR
  • 基于Redisson的分布式锁原理深度解析与性能优化实践指南