数据库--DQL1 排序查询、聚合函数、分组查询、分页查询
2022-05-24 本文已影响0人
何以解君愁
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名 [排序方式],排序字段名1 [排序方式1],...;
排序方式:ASC:升序排列(默认值) DESC:降序排列
注:多个排序条件时,前面条件值一样(比如两人年龄相同),才会根据第二条件进行排序
年龄升序排列:
select * from student order by age asc;
select * from student order by age;
年龄降序排列:
select * from student order by age desc;
年龄降序排列,若一样,成绩升序排序:
select * from student order by age desc,score asc;
聚合函数分类:count统计数量;max最大值;min最小值;sum求和;avg平均值
select 聚合函数名(列名) from 表(null不参与聚合函数运算)
--统计有多少名学生
SELECT count(*) FROM student; /*count取值:①主键②星号*/
--查询最高分
SELECT MAX(score) FROM student;
--查询最低分
SELECT MIN(score) FROM student;
--查询总分
SELECT SUM(score) FROM student;
--查询平均分
SELECT AVG(score) FROM student;
分组查询:SELECT 字段列表 FROM 表名 [WHERE分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后过滤]...;
(分组后,查询的字段为聚合函数与分组字段,查询其他字段无任何意义)
(where是分组前进行限定,不满足条件不参加分组,不能对聚合函数进行判断,having分组后对结果进行过滤,可以对聚合函数进行判断)
(执行顺序:where>聚合函数>having)
--查询男女生各自成绩平均分
SELECT gender,AVG(score) FROM student GROUP BY gender;
--查询男女生各自成绩平均分及人数
SELECT gender,AVG(score),COUNT(*) FROM student GROUP BY gender;
--查询男女生各自成绩平均分及人数,分数低于70不参加分组
SELECT gender,AVG(score),COUNT(*) FROM student WHERE score>70 GROUP BY gender;
--查询男女生各自成绩平均分及人数,分数低于70不参加分组,分组后人数大于2
SELECT gender,AVG(score),COUNT(*) FROM student WHERE score>70 GROUP BY gender HAVING COUNT(*)>2;
分页查询:SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
(起始索引:从0开始)(计算公式:每页起始索引=(当前页码-1)*每页显示的条数)(查询条目数为显示几条数据)
--从0开始查询,查询3条数据
SELECT * FROM student LIMIT 0,3;
--每页显示3条数据,查询第一页数据
SELECT * FROM student LIMIT 0,3;
--每页显示3条数据,查询第二页数据
SELECT * FROM student LIMIT 3,3;
--每页显示3条数据,查询第三页数据
SELECT * FROM student LIMIT 6,3;
(分页查询limit是MySQL数据库的方言;Oracle分页查询使用rownumber,SQL Server分页查询使用top)