数据库MySql--day5 图书馆还书功能与聚合查询

本文介绍了如何使用Mybatis实现图书馆的还书功能,包括用户登录验证、书籍查找、记录更新等步骤。同时,详细讲解了数据库的聚合查询,包括常用的聚合函数如SUM、AVG、MAX、MIN的使用,以及分组和HAVING子句的应用,还提供了相关示例来说明聚合查询的执行顺序和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

还书功能

使用mybatis完成以下功能

1.还书

①登录 UserMapper

用户名 + 密码 :select uid,username,password from users where username = ? and passwod = ?

②还书

书名 BookMapper     RecordMapper

select bid,name,current,total from books where name = ?

如果没有搜到,退出

select rid,uid,bid,borrowedAt,returnedAt from records where uid = ? and bid = ? and returnAt is null;

如果没有搜到,退出

update books set current = current + 1 where bid = ?

update records set returnedAt = ? where rid = ?;

2.查询自己的借阅记录功能

①先登录

②查询借阅记录

先在records表中查询是否有记录,然后再根据returnAt是否为null做区分


聚合查询

聚合查询都是不来自表的直接结果,而是将查询记录进行“合计”之后的结果

select 聚合函数(....)from 表 where 条件

先通过where条件进行记录的筛选,然后通过聚合函数进行聚合

聚合函数:sum(...)求和统计  avg(...)平均统计  max(...)最大值统计  min(...)最小值统计

只能聚合数值类型的字段

分组聚合:先通过where进行记录筛选,然后根据分组凭证,将记录分组,最后针对分组,进行各自的聚合

例子:

select count(*)from citizens

where birthday between “1990” and “1999”

group by gender;

先找出1990-1999年的人,再根据性别分组,再分别进行聚合,统计出人数

注意事项:

进行聚合查询的时候,select 后只能跟聚合函数和分组凭证

并且可以进行多次分组聚合

比如select gender,year,count(*)

from citizens

group by gender,year

分组之后还能使用having再进行依次结果的过滤

select ...from...where group by ...having...

where 和 having 都是对行进行筛选

但where 是发生在聚合之前,having发生在聚合之后

① where 进行记录的筛选 ② 进行group by 分组③ 进行聚合 ④ having 再次过滤


总结:

1基本思路:对符合条件的记录(字段)按照指定规则汇总一个或几个结果

2执行顺序

① where 进行记录的过滤 ② group 进行结果分组 ③ 分别对各组按照聚合函数聚合

④ 使用having进行聚合后的结果过滤 ⑤order进行排序 ⑥ limit/offset 进行区间筛选

3聚合函数

count/sum/avg/max/min

null不参与聚合

4select后边只能跟两类,聚合函数或分组的凭证

5可以进行多次分组,先后顺序不影响

6注意对比where 和having的区别


例题:

确定已售出产品项BR01的总数

select sum(quantity) items_ordered from OrderItems where prod_id = "BR01";

确定Products表中价格不超过10的产品

select max(prod_price)max_price from Products where prod_price <=10;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落尽舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值