SQL语句--DQL其他查询(排序、聚合、分组、限制)

参考:https://www.imooc.com/learn/1281

1.排序
SELECT 字段名 FROM 表名 [WHERE 条件](没有就不写) ORDER BY 字段名 [ASC|DESC];
ASC: 升序, 默认是升序,DESC: 降序

SELECT * FROM student ORDER BY id DESC;
SELECT * FROM student WHERE mark >= 85 ORDER BY id DESC;
SELECT * FROM student WHERE mark >= 85 ORDER BY mark DESC,id ASC;
Snipaste_2020-10-10_14-31-44.png

2.聚合函数
聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值。另外聚合函数会忽略空值
五个聚合函数:
count: 统计指定列记录数,记录为NULL的不统计
sum: 计算指定列的数值和,如果不是数值类型,那么计算结果为0
max: 计算指定列的最大值
min: 计算指定列的最小值
avg: 计算指定列的平均值,如果不是数值类型,那么计算结果为0
SELECT 聚合函数(字段名) FROM 表名;

SELECT COUNT(*) FROM student;
SELECT COUNT(mark) FROM student;
SELECT SUM(mark) FROM student;
SELECT AVG(mark) FROM student;
SELECT MAX(mark) FROM student;
SELECT MIN(mark) FROM student;
Snipaste_2020-10-10_14-52-25.png

3.分组
SELECT 字段 FROM 表名 [WHERE 条件] GROUP BY 分组字段 [HAVING 条件];

SELECT * FROM student GROUP BY sex; --返回每组的第一条
Snipaste_2020-10-10_15-13-41.png

分组的目的就是为了统计,一般分组会跟聚合函数一起使用。

SELECT * FROM student GROUP BY sex;

-- 显示按性别分组并统计各组总分数
SELECT SUM(mark) FROM student GROUP BY sex;
SELECT SUM(mark),sex FROM student GROUP BY sex;

-- 按性别分组并且分数大于70的各组平均分数,将平均分数大于88的组显示出来
SELECT AVG(mark),sex FROM student WHERE mark > 70 GROUP BY sex HAVING AVG(mark) > 88;
Snipaste_2020-10-10_15-28-29.png

having与where的区别

  • having是在分组后对数据进行过滤.
  • where是在分组前对数据进行过滤
  • having后面可以使用聚合函数
  • where后面不可以使用聚合函数

5.limit语句,限制查询记录的条数
SELECT 字段 FROM 表名 LIMIT offset,length;
offset是指偏移量,可以认为是跳过的记录数量,默认为0
length是指需要显示的总记录数

Snipaste_2020-10-10_15-49-18.png

LIMIT的使用场景:分页

Snipaste_2020-10-10_15-56-32.png

总结

SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句];

参考:https://www.imooc.com/learn/1281

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。