一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情。
写在前面👀
承接上文,今天继续学习DQL查询功能
一、排序查询🚗
关键字:
ORDER BY,ASC(升序,默认值),DESC(降序)
1️⃣单列排序🚌
- 只按一个字段进行排序
/* 语法 */
SELECT 字段名 FROM 表名 WHERE 条件 ORDER BY 字段名 [ASC|DESC];
/* 示例 */
-- 以数学成绩升序
SELECT * FROM stu_info ORDER BY math ASC;
- 演示结果如下👇
2️⃣组合排序🚐
- 同时对多个字段进行排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推
/* 语法 */
SELECT 字段名 FROM 表名 WHERE 条件 ORDER BY 字段名 1 [ASC|DESC], 字段名 2 [ASC|DESC];
/* 示例 */
-- 在年龄降序排序的基础上,如果年龄相同再以数学成绩升序排序
SELECT * FROM stu_info ORDER BY age DESC, math ASC;
- 演示结果如下👇
二、聚合函数🚓
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数(又叫组合函数)查询是纵向查询,是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。
1️⃣常用聚合函数🚎
注意:除COUNT(*)函数外,其它聚合函数在执行计算时会忽略NULL值- 聚合函数不能嵌套调用
- 语法:
SELECT 聚合函数(列名) FROM 表名;
| 聚合函数 | 作用 |
|---|---|
COUNT(列名) | 统计这一列有多少条记录 |
MAX(列名) | 求这一列的最大值 |
MIN(列名) | 求这一列的最小值 |
AVG(列名) | 求这一列的平均值 |
SUM(列名) | 对这一列求和 |
2️⃣一些示例🚑
1.COUNT函数🚘
COUNT(*)返回表中记录总数,适用于任意数据类型COUNT(列名)返回不为空的记录总数。
-- 查询学生总数
SELECT COUNT(*) AS 总人数 FROM stu_info;
-- 查询参与数学考试的学生人数
SELECT COUNT(math) AS 参加数学考试人数 FROM stu_info;
- 演示结果如下👇
- 查询学生总数
- 查询参与数学考试的学生人数
- 查询学生总数
2.MAX、MIN、SUM、AVG函数🚔
-- 查询数学成绩最高分、最低分、总分、平均分
SELECT MAX(math) 最高分,MIN(math) 最低分,SUM(math) 总分,AVG(math) 平均分 FROM stu_info;
- 演示结果如下👇
三、分组查询🚕
关键字:
GROUP BY、HAVING在 MySQL 中, GROUP BY 子句用于将结果集根据指定的字段或者表达式进行分组。
1️⃣GROUP BY 如何分组🚒
- 聚合函数,用来汇总。可选,但是一般都用得到。
- SELECT 后的字段必须是分组字段中的字段。至少一个字段,也可以多个字段。
- WHERE 子句是可选的,用来过滤分组前的数据。
- HAVING 子句是可选的,用来过滤分组后的数据。
/* 语法 */
SELECT 字段 1,字段 2...聚合函数 FROM 表名 GROUP BY 分组字段 [HAVING 条件];
/* 示例 */
-- 查询年龄大于等于16 岁的人,按性别分组,统计每组的人数
SELECT gender AS 性别,COUNT(*) AS 人数 FROM stu_info WHERE age>=16 GROUP BY gender ;
- 演示结果如下👇
2️⃣HAVING和WHERE的区别🚚
| 子句 | 作用 |
|---|---|
| WHERE | 1. 在分组前,将不符合WHERE条件的行过滤,即分组前过滤数据 2. WHERE 不可以使用聚合函数 3. 必须 在GROUP BY语句前面使用 |
| HAVING | 1. HAVING 作用是筛选满足条件的组,即分组后过滤数据 2. HAVING 可以使用聚合函数 3. 必须 在GROUP BY语句后面使用 |
/* 示例 */
-- 查询年龄大于等于 16 岁的人,按性别分组,统计每组的人数,并只显示性别人数大于 2 的数据
SELECT gender AS 性别, COUNT(*) AS 人数 FROM stu_info WHERE age >= 16 GROUP BY gender HAVING COUNT(*) >2;
- 演示结果如下👇
四、分页查询🛺
关键字:
LIMIT,LIMIT 的作用就是限制查询记录的条数
1️⃣LIMIT语法格式🚛
/* 语法 */
LIMIT offset,row_count;
/* 示例 */
-- 最多返回三条记录,等效于 LIMIT 0,3
LINMT 3;
-- 跳过2条记录,并从第3条记录开始,最多返回5条记录
LIMIT 2,5
- 从 0 开始计数
offset:起始行数,如果省略,默认是 0row_count:执行要返回的最大行数LIMIT一般位于SELECT语句的最后。
2️⃣LIMIT应用场景🚜
在 SELECT 语句中, LIMIT 子句经常和 ORDER BY 子句结合使用。比如在下面的场景中:
- 班里分数最高的 10 位同学
- 每月播放量前十的视频
- 博客的文章分页列表
/* 语法 */
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE 子句] [GROUP BY 子句][HAVING 子句][ORDER BY 子句][LIMIT 子句];
/* 示例 */
-- 班里数学分数最高的三位同学,并按降序排序
SELECT * FROM stu_info ORDER BY math DESC LIMIT 0,3 ;
- 演示结果如下👇
写在后面🍻
感谢观看啦✨
有什么不足,欢迎指出哦💖
掘金的运营同学审核辛苦了💗