MySQL 查询语句

排序查询

通过 ORDER BY 子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)

复制
ASC: 升序,默认值
DESC: 降序

单列排序

只按某一个字段进行排序,单列排序。

复制
SELECT 字段名 FROM 表名 WHERE 字段=ORDER BY 字段名 [ASC|DESC];

如:

复制
-- 查询所有数据,使用年龄降序排序
select * from student order by age desc;

组合排序

同时对多个字段进行排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推。

复制
SELECT 字段名 FROM 表名 WHERE 字段=ORDER BY 字段名1 [ASC|DESC], 字段名2 [ASC|DESC];

如:

复制
-- 查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩升序排序
select * from student order by age desc, math asc;

聚合函数

平常我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询, 它是对一列的值进行计算,然后返回一个结果值。聚合函数会忽略空值 NULL。

五个聚合函数

SQL 中的聚合函数 作用
max(列名) 求这一列的最大值
min(列名) 求这一列的最小值
avg(列名) 求这一列的平均值
count(列名) 统计这一列有多少条记录
sum(列名) 对这一列求总和

语法

复制
SELECT 聚合函数(列名) FROM 表名;

如:

复制
-- 查询学生总数
select count(id) as 总人数 from student;
select count(*) as 总人数 from student;

由于聚合函数会忽略空值NULL,建议如果统计个数则不要使用有可能为 null 的列,但如果需要把 NULL 也统计进去,那么可以使用IFNULL()。

复制
-- 如果列名不为空,返回这列的值。如果为 NULL,则返回默认值。
IFNULL(列名,默认值)

如:

复制
select count(ifnull(id,0)) from student;

分组查询

分组查询是指使用 GROUP BY 语句对查询信息进行分组,相同数据作为一组。

复制
SELECT 字段1, 字段2, ... FROM 表名 GROUP BY 分组字段 [HAVING 条件];

GROUP BY 将分组字段结果中相同内容作为一组,并且返回每组的第一条数据,所以单独分组没什么用处。 分组的目的就是为了统计,一般分组会跟聚合函数一起使用。

例1:一个学生成绩表,该表中有 "性别" 字段和 "数学成绩" 字段。

复制
-- 按性别进行分组,求男生和女生数学的平均分
select sex, avg(math) from student3 group by sex;

实际上是将每组的 math 求了平均,返回每组统计的结果

例2:

复制
-- 对分组查询的结果再进行过滤
SELECT sex, COUNT(*) FROM student WHERE age > 25 GROUP BY sex having COUNT(*) >2;

查询student表中的不同性别的人的个数,要求年龄大于25岁,按性别分组并计算好不同性别的人的个数时,返回性别人数大于2的数据。

having 与 where 的区别

子名 作用
where 子句 1、对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,即先过滤 再分组。2、where 后面不可以使用聚合函数
having 子句 1、having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤。2、having 后面可以使用聚合函数

如:

复制
SELECT 字段1, 字段2, ... FROM 表名称 WHERE 筛选条件1 GROUP BY 字段3 having 筛选条件2;

where要在分组之前,having要在分组之后。

筛选条件1不能是聚合函数,筛选条件2可以是聚合函数。

LIMIT语句

LIMIT 是限制的意思,LIMIT 的作用就是限制查询记录的条数。

复制
SELECT 字段1 [AS 别名1], 字段2 [AS 别名2], ...
FROM 表名 [WHERE子句] [GROUP BY子句] [HAVING 子句] [ORDER BY子句] [LIMIT子句];

LIMIT 语法格式

复制
LIMIT offset,length;

如:

复制
-- 查询学生表中数据,从第 3 条开始显示,显示 6 条。
select * from student limit 2,6;
posted @   LeeHua  阅读(235)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示

目录导航