Mysql数据库 6.SQL语言 分组、分页查询

分组查询—group by

分组——就是将数据表中的记录按照指定的类进行分组

关键字——group by

语法

语法中加[]的是可有可无的,group by一般和having一起使用

select 分组字段/聚合函数

from 表名

[where 条件]

group by 分组列名 [having 条件]

[order by 排序字段(列名)]

 示例

1.对表中的性别进行分组

代码实现
select stu_gender from students s group by stu_gender ;
运行结果

2.对表中的年龄进行分组并统计每组的人数 select+选择分组字段,聚合函数(统计的列名1)from 表名 group by 列名2;根据列名2进行分组,统计分组后列名1的个数

代码实现
select stu_age ,count(stu_num) from students s group by stu_age ;
运行结果

3.难点:

要求对年龄进行分组,统计各种年龄数量最后对统计后的数量进行排序 oder by放在group by之后

代码实现
select stu_age,count(stu_num) from students s group by stu_age order by count(stu_num) asc; 
运行结果

4.要求对年龄进行分组,统计各种年龄数量最后对统计后的数量进行排序 oder by放在group by之后,再筛选出当前组的人数大于1的组

代码实现
select stu_age,count(stu_num) from students s group by stu_age having count(stu_num)>1 order by stu_age ; 
运行结果

5.要求对年龄进行分组,统计各种年龄数量里性别为男的数据最后对统计后的数量进行排序 oder by放在group by之后,再筛选出当前组的人数大于1的组

代码实现
select stu_age,count(stu_num) from students s where stu_gender = '男' group by stu_age having count(stu_num)>1 order by stu_age ;
运行结果

6.要求对年龄进行分组,统计各种年龄数量里性别为男的数据最后对统计后的数量进行排序 oder by放在group by之后,再筛选出当前组的人数大于1的组先找出男生数据,再根据年龄进行分组,再找出统计的数据大于1的项,在进行order by排序,排序字段放在最后

代码实现
select stu_age,count(stu_num) from students s where stu_gender = '男' group by stu_age having count(stu_num)>1 order by stu_age ;
运行结果

分页查询-limit

当数据表中的记录比较多的时候,如果一次性全部查询出来显示给用户,用户的可读性/体验性就不好,因此我们可以将这些数据分页进行展示

语法

select 列名 from 表名 where 限制条件 limit param1,param2

param1 int,表示获取查询语句的结果中的第一条数据的索引(索引从0开始)

param2 int,表示获取的查询记录的条数(如果剩下的数据条数<param2,则返回剩下的所有记录)

limit后面跟的两个参数一个指的是开始时的数据,另一个指的是每一页分几条数据(每一页展示几条数据)

 

通用分页语句如下:

select * from 表名 [where 限制条件] limit (pageNum-1)(页码数-1)*pageSize(每一页的数据个数),pageSize;

数据通用分页的格式 查询每一页显示的第一个数据的下标

注意事项:limit语句写在最后

书写顺序和执行顺序不同

书写:select、form、where、group by、having、order by、limit

执行:from、where、group by、having、select、order by、limit

后续的join 链接关系 优先级高于form

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值