1.排序查询
语法:order by 子句
order by 排序字段1 排序方式1,排序字段2 排序方式2....
排序方式:
ASC: 升序,默认
DESC:降序
注意:
如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件
2.聚合函数
聚合函数:将一列数据作为一个整体,进行纵向的计算
1.count:计算个数
1.一般选择非空的列:主键
2.count(*) 不推荐使用该符号
例如:
select count (name) from student ;
select count (ifnull(english,0)) from student ;
select count(*) from student;
4.max:计算最大值
3.min:计算最小值
4.sum:计算和
5.avg:计算平均值
例如:
select max(math) from student;
select min(math) from student;
select sum(math) from student;
select avg(math) from student;
注意:
聚合函数的计算,排除null值
解决方案:
1.选择不包含非空的列进行计算
2.ifnull函数
分组查询
1.语法:group by 分组字段
2.注意:
1.分组之后查询的字段:分组字段,聚合函数
2.where和having的区别?
1.where在分组之前进行限定,如果不满足条件,则不参与分组
2.having在分组之后进行限定,如果不满足结果,则不会被查询出来
3.where后不可以跟聚合函数,having可以进行聚合函数的判断
例如:
select sex,avg(math) from student group by sex;
按照性别分组,分别查询男女同学的数学平均分
select sex,avg(math),count(id) from student group by sex;
按照性别分组,分别查询男女同学的数学平均分,人数
select sex,avg(math),count(id) from student wheremath>70 group by sex;
按照性别分组,分别查询男女同学的数学平均分,人数,要求:分数低于70的人,不得参与分组
select sex,avg(math),count(id) from student wheremath>70 group by sex having count(id)>2;
按照性别分组,分别查询男女同学的数学平均分,人数,要求:分数低于70的人,不得参与分组,分组之后,人数要大于两个人
select sex,avg(math),count(id) as 人数 from student wheremath>70 group by sex having 人数>2;
select sex,avg(math),count(id) 人数 from student wheremath>70 group by sex having 人数>2;
按照性别分组,分别查询男女同学的数学平均分,人数,要求:分数低于70的人,不得参与分组,分组之后,人数要大于两个人 ,改别名(一般为英文)
分页查询
1.语法:limit 开始的索引,每页查询的条数
2.公式:开始的索引=(当前的页码-1)*每页显示的条数
例如:
每页显示三条记录
select * from student limit 0,3; 第一页
select * from student limit 3,3; 第二页
select * from student limit 6,3; 第三页
3.limit是一个MySQL“方言”