目录
- 1. 简述
- 2. 功能代码
- 2.1 创建视图显示所有逾期未归还的借阅信息(包括借阅人姓名,借阅人类别,书名,借出日期,应归还日期,逾期时长);
- 2.2 创建存储过程,每借出一本图书,向借阅信息表中加入一条记录;
- 2.3 创建存储过程,每归还一本图书,修改借阅信息表中相应的记录;
1. 简述
这篇文章将主要完成图书借阅系统的 1~3
题(视图 以及 存储过程),即
- 创建视图显示所有逾期未归还的借阅信息(包括借阅人姓名,借阅人类别,书名,借出日期,应归还日期,逾期时长);
- 创建存储过程,每借出一本图书,向借阅信息表中加入一条记录;
- 创建存储过程,每归还一本图书,修改借阅信息表中相应的记录;
2. 功能代码
2.1 创建视图显示所有逾期未归还的借阅信息(包括借阅人姓名,借阅人类别,书名,借出日期,应归还日期,逾期时长);
# 删除视图
drop view if exists Overdue_view;
# 创建视图
CREATE VIEW `library`.`Overdue_view` AS SELECTborrower.`name` AS 借阅人姓名, borrower.category AS 借阅人类别, book.`name` AS 书名, information.leadDate AS 借出日期, information.returnDate AS 应归还日期,TO_DAYS(NOW()) - TO_DAYS(information.returnDate) AS '逾期时长(天)'
FROMbookINNER JOINinformationON book.id = information.bookidINNER JOINborrowerON information.borrowerid = borrower.id
WHERE returnDateReality IS NULL AND TO_DAYS(NOW()) - TO_DAYS(information.returnDate) > 0;
查看视图数据:
-
可以在可视化界面视图中双击查看数据:
-
利用代码查看:
SELECT * FROM overdue_view;
【例 1(附加)】利用刚刚创建的视图查询逾期未归还天数超过 220
天的借阅人信息。
SELECT id, `name`, category, tel, email FROM borrowerWHERE `name` IN (SELECT `借阅人姓名` FROM overdue_viewWHERE `逾期时长(天)` > 220);
2.2 创建存储过程,每借出一本图书,向借阅信息表中加入一条记录;
DROP PROCEDURE IF EXISTS p_InsertLeadInfo;
delimiter $
create procedure p_InsertLeadInfo(in borrowerid char(13), in bookid char(12))
beginINSERT INTO information VALUES(DEFAULT,borrowerid,bookid,curdate(),DEFAULT,DEFAULT);
end$
delimiter ;
检测存储过程是否正确:
select * from information;
call p_InsertLeadInfo(2020312011047,101101699412);
select * from information;
我们在命令列界面测试,方便查看数据:
测试结果如下:
可见存储过程能够正常向借阅信息表插入数据。
2.3 创建存储过程,每归还一本图书,修改借阅信息表中相应的记录;
drop PROCEDURE if EXISTS p_UpdateLeadInfo;
delimiter $
create procedure p_UpdateLeadInfo(in borrowerid char(13), in bookid char(12))
beginUPDATE information SET returnDateReality = curdate()WHERE information.borrowerid = borrowerid AND information.bookid = bookid AND information.returnDateReality IS NULL;
end$
delimiter ;
检测存储过程是否正确:
call p_UpdateLeadInfo(2020312011047,101101699412);
select * from information;
测试结果如下:
可见归还图书后,借阅信息表的已还日期得到更新,归还日期为当天日期,修改成功!
上一篇文章:【数据库——MySQL(实战项目1)】(1)图书借阅系统