MySQL-DQL查询语句的其他方法查询
1.查询语句
order by 子句:
order by 排序字段1 排序方式1,排序方式2 排序方式2 ...
排序方式:
asc:升序(默认)
desc:降序
注意:
如果有多个排序条件时,则当前边的条件值一样时,才会判断第二个条件 如:select * from student order by math desc, english asc(按照数学成绩降序排列,如果数学成绩一样,则按照英语成绩升序排列)
2.聚合函数:将一列数据作为一个整体,进行纵向计算(比如计算数学吃绩这一列的平均分)
Ⅰ.count:计算个数
count 排序的列
①根据某个列的属性来查询个数:
select count(math) from student;
②如果想要查询只要有一个数据不为空的就包含查询的个数,则:
select count(*) from student;
Ⅱ.max:计算最大值
select count(max) from student;
Ⅲ.min:计算最小值
select count(min) from student;
Ⅳ.sum:求和
select count(sum) from student;
Ⅴ.avg:计算平均值
select count(avg) from student;
注意:所有的聚合函数都会排除空的数据,比如,根据英语成绩计算数量,如果有8个数据,其中一个的英语数据为null,则查询到的count为7 如:select count(english) from student;
如果说非要根据英语成绩查询所有的数量且为8个,则使用ifnull 如:select count(ifnull(english,0)) from student;
3.分组查询
group by子句:
group by 分组的字段
根据性别分组查询性别的数学成绩平均分,人数 如:select sex, avg(math), count(id) from student group by sex;
根据性别分组查询性别的数学成绩平均分,如果分数小于七十则不参与分组,分组之后,人数要大于2个人 如:select sex, avg(math), count(id) from student where math>70 group by sex having count(id)>2;
注意:
分组查询所查询的要么是分组的字段,要么是聚合函数的字段,否则分组查询就没有任何意义
分组查询中的条件里,where和having的区别就在于:
Ⅰ.where 在分组之前进行限定,如果不满足条件,则不参与分组 having是在分组之后进行限定,如果不满足条件,则不会被查询出来
Ⅱ.where后不可以跟聚合函数,having后可以跟聚合函数
4.分页查询
limit子句:
limit 开始的索引,每页查询的条数;
显示学生的信息,每页显示三条记录:
select * from student limit 0,3 --第一页(id为1,2,3的数据)
select * from student limit 3,3 --第二页(id为4,5,6的数据)
select * from student limit 6,3 --第三页(id为7,8,9的数据)
查询的公式:
开始的索引=(当前页码-1)* 每页显示的条数
注意:
limit是MySQL独有的分页查询的方法,Oracle、SQL server等数据库的分页查询的方法和MySQL的方法不同