参考: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;
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;
3.分组
SELECT 字段 FROM 表名 [WHERE 条件] GROUP BY 分组字段 [HAVING 条件];
SELECT * FROM student GROUP BY sex; --返回每组的第一条
分组的目的就是为了统计,一般分组会跟聚合函数一起使用。
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;
having与where的区别
- having是在分组后对数据进行过滤.
- where是在分组前对数据进行过滤
- having后面可以使用聚合函数
- where后面不可以使用聚合函数
5.limit语句,限制查询记录的条数
SELECT 字段 FROM 表名 LIMIT offset,length;
offset
是指偏移量,可以认为是跳过的记录数量,默认为0
length
是指需要显示的总记录数
LIMIT的使用场景:分页
总结
SELECT *|字段列表 [as 别名] FROM 表名 [WHERE子句] [GROUP BY子句][HAVING子句][ORDER BY子句][LIMIT子句];