MySql基础三之【单表查询进阶操作】

读者大大们好呀!!!☀️☀️☀️


博客头像
🔥 欢迎来到我的博客
👀期待大大的关注哦❗️❗️❗️
🚀欢迎收看我的主页文章➡️寻至善的主页

前言

本系列为MySql基础,将分为四篇来进行对MYSQL的了解与操作第一篇为对MySQL的了解与DBeaver操作MySQL;第二篇为MySQL增删改查第三篇为MySQL的单表查询操作;第四篇为MYSQL的复杂查询操作;
本篇为第三篇MySQL的单表查询进阶操作了解

为了更好的显示多数据操作,下面将使用导入的数据库SQL文件进行相应的查询操作。

导入数据库文件

1、右击数据库并点击运行脚本
在这里插入图片描述
找到SQL文件位置点击运行即可:
在这里插入图片描述

筛选记录

语法示例: select * from 表名 where 条件

:该语法格式可以拆解成三部分:select子句、from子句、where子句:
select子句的作用:筛选字段
from子句的作用:明确数据来源
where子句的作用:筛选记录

where 条件子句中常用的几个关键字:
1️⃣比较运算符:> >= < <= != <> =
2️⃣逻辑运算符:not and or
3️⃣范围运算符:between and 在某个区间范围里 in 在某个数据集合里
4️⃣模糊查询:like % _
% 匹配任意个字符(0/1/2……)
_ 匹配1个字符
5️⃣空值查询:is null is not null
is null 是空值
is not null 不是空值

条件查询支持空值查询:
空值指的是这里没有值,在MySQL里使用null表示,它跟0是不一样的概念。0代表的是这里有值,值是0。

实例:
🚀查询1班和2班的男学员信息
在这里插入图片描述

🚀查询年龄在19到21岁之间的学员信息(包含19和21)

select * from xsb where nl between 19 and 21;
select * from xsb where 19<=nl and nl<=21; 

在这里插入图片描述

排序显示

将查询出来的结果按照一定的要求进行排序关键字 order by

语法示例:select * from 表名 where 条件 order by asc(默认升序)/desc(降序)

1️⃣单字段排序

查询所有学员的信息,按年龄降序

select * from xsb order by desc

在这里插入图片描述

查询1班学员的信息,按年龄升序

select * from xsb where bj='1班' order by nl;

在这里插入图片描述

2️⃣多字段排序 order by 后面可以跟多个字段,多个字段之间用逗号隔开

查询所有学员的信息,按年龄和学号排序

select * from xsb order by nl,xh;
--- 当年龄一样时再按照学号排序

在这里插入图片描述

3️⃣按select子句后的字段的序号来排序(序号从1开始)

select * from xsb order by 5; # 按select后第5个字段排序

在这里插入图片描述

分组查询

分组查询会用到聚合函数,常见的聚合函数有:
avg(字段名):求平均值函数
sum(字段名):求和函数
max(字段名):求最大值
min(字段名):求最小值
count(*/字段名):统计个数

语句示例:select count(*) from 表名;

统计学生表里的学员人数

select count(*) from xsb;

在这里插入图片描述

查询001号学员的平均分、总分、最低分、最高分并依次取别名

select avg(cj) 平均分,sum(cj) 总分,min(cj) 最低分,max(cj)最高分
from cjb
where xh=001;

在这里插入图片描述
为了得到分组统计数据(例如各个班级各有多少人),聚合函数需要结合相应的分组SQL语句一起使用。
group by:分组
having:组过滤
语句示例:select *|字段名1,字段名2,……字段名n
from 表名
where 筛选条件
group by 分组字段名——》作用:分组
order by 排序字段名 【asc/desc】;

统计各个班级各有多少人

思路分析:三步走
一、数据来自哪个表?
二、哪个字段分组?
三、使用哪个聚合函数?

select bj,count(xh)
from xsb
group by bj

在这里插入图片描述

统计男生和女生各有多少人?

select xb,count(*)
from xsb
group by xb;

在这里插入图片描述

统计各个课程的平均分?

select kch avg(cj)
from cjb
group by kch

在这里插入图片描述
注:
1️⃣group by 按某个字段分组,那么select 后面通常只出现分组字段和聚合函数;
2️⃣按某个字段分组了,那么聚合函数作用于每一个分组;
3️⃣还可以多字段分组:

统计各个班级各个性别的人数有多少?

select bj,xb,count(*)
from xsb
group by bj,xb;

在这里插入图片描述
需求:假如说你要查询的不是所有的分组,而是满足特定条件的分组
解决办法:having子句,having子句用于筛选满足条件的分组
语句示例:

select *|字段名1,字段名2,……字段名n ---->作用:筛选字段/列
from 表名----------------------------------------------->作用:明确数据来源
where 筛选条件--------------------------------------->作用:筛选记录/行
group by 分组字段名 -------------------------------->作用:分组
having 针对组的筛选条件-------------------------->作用:筛选组

统计各个学员的考试总分,展示总分超过100分的信息,并把总分按降序排序

select xh,sum(cj)
from cjb
group by xh
having sum(cj)>100
order by sum(cj) desc

在这里插入图片描述

查询平均分在80分及以上的科目及其平均分,按平均分升序排序

select kch avg(cj)
from cjb
group by kch
having avg(cj)>80
order by avg(cj);

在这里插入图片描述

统计不止一门课程不及格的学员学号

select xh count(*)
from cjb
where cj<=60
group xh
having count(cj)>1;

在这里插入图片描述
本篇的单表查询就到此结束了,下一篇将是MYSQL基础分享的最后一篇,子查询与多表联查,敬请期待吧!

✈️✈️✈️如果喜欢这篇文章的话

🙏大大们可以动动发财的小手:
👉👉👉 点赞:👍收藏:⭐️评论:✍️👈👈👈

  • 32
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一川烟柳清风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值