分组查询
按照字段分组,此字段相同的数据会被放到一个组中。
分组的目的,是对每一组的数据进行统计。 分组查询通常配合聚合函数一起使用。
语法:
select 字段1,字段2,聚合函数 from 表名 group by 字段1,字段2
例1:查询students表中各个性别的人数
select sex,count(*) from students group by sex;
例2 :查询students表中每个班级男女性别的各自的总数
注意:
1分组可以有多个条件,跟排序类似,有顺序的,下面就是在班级分组的基础上,每个班再按照性别去再细分。
2 分组的条件和前面的select的查询项要对应上,否则不会展示出来想要的结果。
select class,sex,count(*) from students group by class,sex;
分组后的数据筛选
分组的过程中,也可以进行条件筛选,但是和不分组的时候使用where关键字不同,分组的条件判断关键字是having
语法: select 字段1,字段2 聚合函数 from 表名 order by字段1,字段2 having 条件
例1:查询students表中男生的总数 where写法:
select count(*) from students where sex = '男'
分组查询的写法:
select sex,count(*) from students group by sex having sex ='男'
上面的例子其实没有必要用分组查询,只是为了跟大家对比。
例2:查询每个班级中男生的人数:
select calss,sex ,count(*) from students group by class,sex having sex = '男'
注意:
1 where 是对from后面指定的表进行删选过滤。属于对原始数据的筛选。
2 having是对group by的结果进行筛选,是对分组结果的筛选。
3 having后面的条件可以使用聚合函数,而where中的条件不能使用聚合函数。
数据查询之分页查询
分页查询的使用场景,就是获取一部分数据的内容。
语法格式: select * from 表名 limit start,count
说明:
limit是分页的关键字。 start 是从哪条数据开始,count 是获取count的值的数量。
start的索引是从0 开始的。
例1:选取students表的前10条数据。
select * from students limit 0,10
常见的分页查询的场景公式
select * from 表名 limit (n-1)*m ,m n表示第几页的数据,m表示每页显示多少条。
注意:m和n是让你自己计算的具体的页数而已,不是语法,不能直接写进sql语句。