排序查询(P13)
/* 排序查询 SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2]...;
排序方式
ASC:升序排列(默认值)
DESC:降序排列
*/
-- 1.查询学生信息,按照年龄升序排列
SELECT * FROM stu order by age asc;
-- 2.查询学生信息,按照数学成绩降序排列
SELECT * FROM stu order by math desc;
-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,按照英语成绩升序排列
SELECT * FROM stu order by math desc,English asc;
如果有多个排序条件,只有第一个条件相同时才会启动第二个排序条件
聚合函数&分组查询
聚合函数语法:
!!!所有的NULL值都不能参与聚合函数的计算
举例来说 一列英语成绩分别为 10 20 30 40 50 空
找最小值的时候会
SELECT MIN(English) FROM stu;
stu为表名
会找到最小值为10而不是空
SELECT 聚合函数名(列名) FROM 表;
COUNT()统计的列名不能为空
/*
* COUNT 求数量 统计的列名不能为空
* 取值:(不能为空的解决办法)
1.主键
2. *(建议)
* MAX 求最大值
* MIN 求最小值
* SUM 求和
* AVG 求平均值
*/
-- 1.统计班级一共有多少个学生
SELECT COUNT(*) FROM stu; -- count统计的列名不能为空
-- 2.查询数学成绩的最高分
SELECT MAX(math) FROM stu;
-- 3.查询数学成绩的最低分
SELECT MIN(math) FROM stu;
-- 4.查询数学成绩的总分
SELECT SUM(math) FROM stu;
-- 5.查询数学成绩的平均分
SELECT AVG(math) FROM stu;
-- 6.查询英语成绩的最低分
SELECT MIN(English) FROM stu;
分组查询语法
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]
注意:分组之后查询的字段是聚合函数和分组字段,查其他内容无意义
例如 按性别分组分为男女 在查询的时候
SELECT name,sex, AVG(math) FROM stu GROUP BY sex;
查询了不参与分组的name 产生了如上图所示的结果是没有意义的
-- 1.查询男同学和女同学各自的数学平均分
SELECT sex, AVG(math) FROM stu GROUP BY sex;
SELECT name,sex, AVG(math) FROM stu GROUP BY sex;
-- 2.查询男同学和女同学各自的数学平均分以及各自的人数
SELECT sex, COUNT(*),AVG(math) FROM stu GROUP BY sex;
-- 3.查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组
SELECT sex, COUNT(*),AVG(math) FROM stu WHERE math>70 GROUP BY sex;
-- 4.查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组后人数大于2
SELECT sex, COUNT(*),AVG(math) FROM stu WHERE math>70 GROUP BY sex HAVING COUNT(*)>2;
!!!!where 和 having的区别
1.执行时机不一样,where是分组之前进行限定,不满足where条件则不参与分组,而having是分组之后对结果进行过滤
2.可判断的条件不一样 where不能对聚合函数进行判断,having可以
执行顺序为 where>聚合函数>having
分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数
起始索引:从0开始
SELECT * FROM stu;
-- 1.从0开始查询,查询3条数据
SELECT * FROM stu LIMIT 0,3;
-- 2.每页显示3条数据,查询第1页数据
SELECT * FROM stu LIMIT 0,3;
-- 3.每页显示3条数据,查询第2页数据
SELECT * FROM stu LIMIT 3,3;
-- 4.每页显示3条数据,查询第3页数据
SELECT * FROM stu LIMIT 6,3;
-- 起始索引=(当前页码-1)*每页的条目数!!!!!!!!
注意:limit是MySQL的方言,其他数据库不同
标签:13,JavaWeb,--,查询,stu,math,sex,2022.10,SELECT From: https://www.cnblogs.com/Arkiya/p/16789559.html