1、排序查询
ORDER BY 排序字段1 排序方式1,排序字段2 排序方式2;
排序方式:
ASC:升序,默认的。
eg:SELECT * FROM student ORDER BY math;
SELECT * FROM student ORDER BY math ASC;
DESC:降序。
eg:SELECT * FROM student ORDER BY math DESC;
-- 按照数学成绩排名,如果数学成绩一样,则按照英语成绩排名
SELECT * FROM student ORDER BY math ASC,english ASC;
注意:
如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件
2、聚合函数:将一列数据作为一个整体,进行纵向计算。
1、count:计算个数
一般选择非空的列:主键
count(*)(一列中有不为null的,就算作一个)(不推荐)
eg:SELECT COUNT(NAME) FROM student;
SELECT COUNT(english) FROM student;
SELECT COUNT(IFNULL(english,0)) FROM student;
2、max:计算最大值
eg:SELECT MAX(math) FROM student;
3、min:计算最小值
eg:SELECT MIN(math) FROM student;
4、sum:计算和
eg:SELECT SUM(math) FROM student;(直接可排除null值进行计算)
5、avg:计算平均值
eg:SELECT AVG(math) FROM student;
*注意:聚合函数的计算会排除null值
解决方案:
1、选择不包含null的列进行计算
2、ifnull函数
3、分组查询:
1、语法:group by 分组字段
eg:SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex;
2、注意:
1、分组之后查询的字段:分组字段,聚合函数
2、分组之前对条件进行一些限定
where和having的区别:
1、where在分组之前进行限定,如果不满足条件,则不参与分组。
having在分组之后进行判定,如果不满足结果,总不会被查询出来
2、where之后不可以跟聚合函数,having可以进行聚合函数的判定
--小于70分不参与分组
SELECT sex,AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
--小于70分不参与分组,人数要大于2个人
SELECT sex,AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex,AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;
4、分页查询
1、语法:limit 开始的索引,每页查询的条数;
2、公式:开始的索引 = (当前页码-1)*每页显示的条数
-- 每页显示3条记录
SELECT * FROM student LIMIT 0,3;-- 第一页
SELECT * FROM student LIMIT 3,3;-- 第二页
-- 公式,开始的索引 = (当前页码-1)*每页显示的条数
SELECgai'nT * FROM student LIMIT 6,3;-- 第三页
3、limit是一个mysql分页操作的“方言”
网友评论