实验五查询的综合运用
一、实验目的
利用SQL语句实现分组子句、摘要子句和函数等组合,可以实现对结果集全部数据统计、分组统计、全部记录与分组混合统计等多种多样的统计查询需求。掌握查询的综合使用,深刻理解查询语句的含义及使用。
二、实验内容
在读者_图书库中,用SQL表示下列操作。
(1)使用外部连接,查询所有读者借书的情况,最后结果中显示读者的姓名及所借图书的书号信息。
(2)使用外部连接,查询所有读者,所有图书的借阅情况,最后结果中显示读者的姓名,所借图书的书号及名称等信息。
(3)查询至少借了两本书的男性读者的编号及所借图书的数量,结果按照借书数量降序排序。
(4)查询借书数量最多的读者的编号及所借图书的数量。
(5)查询计算机类和电子工业出版社出版的图书。
(6)查找所有男性读者的信息,并将结果存到“男性读者”表中。(7)查询图书表中所有信息,将结果存到临时表tmp1中。
(8)列出计算机类图书的书号、名称及价格,最后求出册数和总价格。
(9)按类别列出所有图书的书号、名称及价格,并求出各类图书的总册数和总价格。
(10) 查询借阅了“刘洪亮”编写的任意一本图书的读者的编号。
(11) 查询借阅了“刘洪亮”编写的任意一本图书的读者的姓名。
三、实验参考操作
(1) select 姓名,书号from 读者left join 借阅
on 读者.编号=借阅.读者编号
(2) select 姓名,图书.书号,书名from 读者full join 借阅full join 图书
on 图书.书号=借阅.书号
on 读者.编号=借阅.读者编号
注意:在本命令中,两个“ON”语句的先后顺序。
(3) select 读者编号,count(*) 借书数量from 读者join 借阅
on 读者.编号=借阅.读者编号
where 性别='男'
group by 借阅.读者编号
having count(*)>=2
order by 2 desc
(4) select top 1 读者编号,count(*) 借书数量from 读者join 借阅on 读者.编号=借阅.读者编号
group by 借阅.读者编号
order by 2 desc
(5) select * from 图书where 类别='计算机类'
union
select * from 图书where 出版社='电子工业出版社'
(6) select * into 男性读者from 读者where 性别='男'
注:大家在资源管理器中找一下本例所生成的表“男性读者”的位置。
(7)select * into #tmp1 frm 图书
注:将结果保存为临时表的方法和保存为表的方法相同,只是在表名前加上一个#号,大家在资源管理器中找一下本例所生成的临时表tmp1的位置。
(8)select 书号,书名,定价from 图书
where 类别='计算机'
compute count(书号),sum(定价)
(9)select 书号,类别,书名,定价from 图书
order by 类别compute count(书号),sum(定价) by 类别
(10) select 读者编号from 借阅
where 书号=any
(select 书号from 图书where 作者='刘洪亮')
(11)select 姓名from 读者
where 编号in(select 读者编号from 借阅
where 书号=any
(select 书号
from 图书where 作者='刘洪亮'))