您的当前位置:首页正文

【模块5:数据查询】实训 查询图书管理系统数据库

2024-10-18 来源:威能网


--【模块5:数据查询】

--实训 查询图书管理系统数据库

--一、实验目的

--1,能掌握各种查询方法

--2.能通过查询获取对自己有用的数据

--3.能对查询结果进行编辑。

--二、实验内容

--实验准备:打开bookmanager数据库,在该数据中完成下流实验。

use bookmanager

--【项目1:表单查询】

--1.查询所有图书的基本信息。

select * from book

--2.查询所有图书的编号、名称和价格。

select 图书编号,图书名称,价格 from book

--3.查询所在部门为计算机系读者的借书证号、姓名和联系电话。

select 借书证号,姓名,联系电话 from reader where 部门='计算机系'

--4.查询借书证号为R00001且所借图书编号为R00003的借阅记录。

select 借阅日期 from borrow where 借书证号='R00001'and 图书编号='R00003'

--5.查询姓刘的读者的基本信息。

select * from reader where 姓名 like '刘%'

--6.查询borrow表未还书的记录。

select 借书证号,图书编号,借书期限,是否过期 from borrow where 还书日期 is null

--7.查询借阅日期“2017-12-06”至“2018-02-06”的借书记录信息。

select 借书证号,图书编号,借阅日期,借书期限,还书日期,是否过期 from borrow

where 借阅日期 between '2017-12-6'and '2018-2-6'

--【项目2:对查询结果进行编辑】

--1.查询reader表中的读者姓名和部门,输出结果的字段名是:name和department。

select 姓名 'name', 部门' departmen' from reader

--2.查询借书证号为R00001的读者所借图书至已有多少天。

select datediff(day,借阅日期,getdate()) '已借阅天数' from borrow

where 借书证号='R00001'

--3.查询借书证号为R00002的读者一共借了多少本书。

select count(*) from borrow

where 借书证号='R00002'

--4.查询所有图书信息,结果按价格的降序排列。

select 图书名称,价格 from book

order by 价格 desc

--5.统计图书信息表中不同出版社的图书的数目,把统计结果大于或等于2的记录输出。

select 出版社编号,count(*) '数目' from book

group by 出版社编号 having count(*)>=2

--6.查询所有图书的库存总量。

select sum(库存数量)'库存总量' from book

--7.根据借阅如期和借书期限,以及现在的日期,判断还书日期是否为空的借阅记录是否过期,输出过期的借阅记录。

select * from borrow

where datediff(d,借书期限,借阅日期)--8.根据借阅记录和借书期限,以及现在的日期,判断日期为空的借阅记录是否过期,若过期,请把“是否过期”属性修改为“是”。

update borrow

set 是否过期='是'

where datediff(day,借阅日期,getdate())>借书期限 and 还书日期 is null

--【项目3:连接查询】

--1.采用等值连接的方式查询读者的借书证号、姓名、联系电话以及所借书的图书编号,借阅日期。

select reader.借书证号,姓名,联系电话,borrow.图书编号,借阅日期

from reader,borrow

where reader.借书证号=borrow.借书证号

--2.采用内连接的方法查询图书信息以及相对应的出版社的详细信息。

select * from book,publish

where book.出版社编号=publish.出版社编号

select * from book join publish

on book.出版社编号=publish.出版社编号

--3.查询读者借书证号、姓名、部门以及所借图书的图书编号、借阅日期,没有连接成功的记录也要输出。

select reader.借书证号,姓名,部门,图书编号,借阅日期

from reader left join borrow

on reader.借书证号=borrow.借书证号

--4.查询借书信息表中读者的借书证号、图书编号、借阅日期以及所借图书在图书信息表中对应的出版社编号,图书信息表没有连接成功的记录也要输出。

select borrow.图书编号,借书证号,借阅日期,出版社编号

from borrow left join book

on borrow.图书编号=book.图书编号

--5.查询读者的借书证号、姓名、联系电话、以及所借图书的图书编号、借阅日期,没有借阅记录的也要输出。

select reader.借书证号,姓名,联系电话,图书编号,借阅日期

from reader left join borrow

on reader.借书证号=borrow.借书证号

--6.查询读者的借书证号、姓名、联系电话、以及所借图书的图书编号、借阅日期、出版社和编号。

select reader.借书证号,姓名,reader.联系电话,book.图书编号,借阅日期,publish.出版社编号

from reader join borrow

on reader.借书证号=borrow.借书证号

join book on book.图书编号=borrow.图书编号

join publish on book.出版社编号=publish.出版社编号

--【项目4:子查询】

--1.查询借阅了图书编号为B00001的图书的读者信息。

select 借书证号,姓名,性别,部门,联系电话

from reader

where 借书证号 in(

select 借书证号

from borrow

where 图书编号='B00001'

)

--2.查询借阅了高等教育出版社出版和清华大学出版社出版的图书的读者信息。

select 借书证号,姓名,性别,部门,联系电话

from reader

where 借书证号 in(

select 借书证号

from book

where 出版社编号 in(

select 出版社编号

from publish

where 出版社名称='高等教育出版社'or 出版社名称='清华大学出版社'))

--3.查询未按时归还图书的读者的借书证号、姓名、部门和联系电话。

select 借书证号,姓名,部门,联系电话

from reader

where 借书证号 in(

select 借书证号

from borrow

where 是否过期='否' or 是否过期 is null)

--4.查询姓名为张云的读者的借阅记录。

select 借书证号,图书编号,借书期限,还书日期,是否过期

from borrow

where 借书证号 in(

select 借书证号

from reader

where 姓名='张云')

--5.查询姓名为张云的读者所借阅图书的详细信息。

select 图书编号,图书名称,作者,出版社编号,版次,价格,库存数量

from book

where 图书编号 in(

select 图书编号

from borrow

where 借书证号 in(

select 借书证号

from reader

where 姓名='张云'))

--6.利用相关子查询查询吴杉杉是否有借阅图书的记录,若有则输出借阅记录。

select 借书证号,图书编号,借书期限,还书日期,是否过期

from borrow

where 借书证号 in(

select 借书证号

from reader

where 姓名='吴杉杉')

--7.查询图书价格比所有图书平均价格高的图书信息。

select 图书编号,图书名称,作者,出版社编号,版次,价格,库存数量

from book

where 价格>(

select avg(价格)

from book

)

--8.查询图书价格比图书编号为B00003和B00004的价格都高的图书信息。

select 图书编号,图书名称,作者,出版社编号,版次,价格,库存数量

from book

where 价格>all(

select 价格

from book

where 图书编号='B00003' or 图书编号='B00004')

因篇幅问题不能全部显示,请点此查看更多更全内容