西南科技大学数据库实验二(orcal19g)

西南科技大学数据库实验
西南科技大学数据库实验二
实验二 数据查询 设计型 代码

实验二  数据查询	设计型	代码
下面为数据库实验二的参考
查表
环境为 orcal 19g ,plsql 15 
##前提告知###
本文章为西南科技大学数据库实验二内容,代码在orcal 19 g 上运行能成功,如有编译失败,请仔细查看是否粘贴完整,环境是否不同,或另找代码
        发布于CSDN上 望帮助后生能顺利过实验,提供参考,绝非偷懒
     只单纯分享代码,具体问题请自行解决,不能帮助回答问题,免私信
发布时间2022年

在sql窗口中输入查询sql语句,点击运行即可显示查询结果

1、 查询“红楼梦”目前可借的各图书编号,及所属版本信息。(是否借出为‘否‘的图书)

select 图书编号,出版单位 from 书目,图书 where 书目.isbn=图书.isbn
and 书名='红楼梦'
and 是否借出='否';
2、查找高等教育出版社的所有书目及单价,结果按单价降序排序。
select 书名,单价 from 书目
where 出版单位='高等教育出版社'
order by 单价 desc;
3、统计“红楼梦”各版的藏书数量(ISBN不同则版本不同)。
select count(ISBN) from 书目
where 书名='红楼梦'
group by ISBN;
4、查询学号“20061234”号借书证借阅未还的图书的信息。
select *
from 图书,借阅
where 图书.图书编号=借阅.图书编号 and 借阅.借书证号='20061234'
5、查询各个出版社的图书最高单价、平均单价。
select 书目.出版单位,max(单价),avg(单价)
from 书目
group by 出版单位
6、要查询借阅了两本和两本以上图书的读者的个人信息。
select * from 读者
where 借书证号 in
(select 借书证号
from 借阅
group by 借书证号
having count(借书证号)>=2);
7、查询“王菲”的单位、所借图书的书名和借阅日期。
select 读者.单位,书目.书名,to_char(借阅.借书日期,'yyyy/mm/dd') 借书日期 from 书目,图书,读者,借阅 where 书目.ISBN=图书.ISBN and 图书.图书编号=借阅.图书编号 and 借阅.借书证号=读者.借书证号 and 读者.姓名='王菲';
8、查询每类图书的册数和平均单价。
select 图书分类.类名,avg(单价),count(书目.图书分类号)
from 书目,图书分类
where 书目.图书分类号=图书分类.图书分类号
group by 类名
9、统计从未借书的读者人数。
select count(姓名)
from 读者
where not exists (select * from 借阅
where 读者.借书证号=借阅.借书证号)
10、统计参与借书的人数。
select count(姓名)
from 读者
where exists (select * from 借阅
where 读者.借书证号=借阅.借书证号)
11、找出所有借书未还的读者的信息及所借图书编号及名称。
select 读者.*,借阅.图书编号,书目.书名 from 读者,借阅,书目,图书 where 读者.借书证号=借阅.借书证号 and 借阅.图书编号=图书.图书编号 and 图书.ISBN=书目.ISBN and 借阅.归还日期 is null;
12、检索书名是以“Internet”开头的所有图书的书名和作者。
select 书名,作者
from 书目
where 书名='Internet%'
13、查询各图书的罚款总数。
select 借阅.图书编号,sum(罚款分类.罚金) 罚款总数 from 借阅,罚款分类 where 借阅.罚款分类号=罚款分类.罚款分类号 group by 借阅.图书编号;
14、查询借阅及罚款分类信息,如果有罚款则显示借阅信息及罚款名称、罚金,如果没有罚款则罚款名称、罚金显示空(左外连接)
select 借阅.*,罚款分类.*
from 借阅 left outer JOIN 罚款分类 on 借阅.罚款分类号=罚款分类.罚款分类号
15、查询借阅了所有“文学”类书目的读者的姓名、单位。
select 读者.姓名,读者.单位 from 读者,借阅 where 读者.借书证号=借阅.借书证号 and 借阅.图书编号 in (select 图书.图书编号 from 图书,书目,图书分类 where 图书分类.类名='文学' and 图书分类.图书分类号=书目.图书分类号 and 图书.ISBN=书目.ISBN);
--扩展实验
1、在书目关系中新增“出版年份”,并在该属性下添加数据。(在SQL窗口中添加此代码运行,运行后点击粉色圆饼使其保存更新图书信息方可继续下面的查询)。
alter table 书目 add (出版年份 number(4,0));
update 书目 set 出版年份=2005 where ISBN=7040195836;
update 书目 set 出版年份=1983 where ISBN=9787508040110;
update 书目 set 出版年份=2008 where ISBN=9787506336239;
update 书目 set 出版年份=2009 where ISBN=9787010073750;
2、求总藏书量、藏书总金额、最高价、最低价。
select count(图书编号) 总藏书量,sum(单价) 藏书总金额,max(单价) 最高价,min(单价) 最低价 from 图书,书目 where 图书.ISBN=书目.ISBN;

3、列出藏书在5本以上的书目(书名、作者、出版社、出版年份)。
select 书名,作者,出版单位,出版年份 from 书目 where ISBN in (select 图书.ISBN from 图书 group by 图书.ISBN having count( 图书.isbn)>5);

4、列出年份最久远的书?
select 书名,作者,出版单位,出版年份 from 书目 where 出版年份 in (select min(书目.出版年份) from 书目);

5、 目前实际已借出多少册书?
select count(借阅流水号) 借出数量 from 借阅 where 归还日期 is null;

6.、哪一年的图书最多?
select * from (select 出版年份,count(出版年份) 数量 from 图书,书目 where 图书.ISBN=书目.ISBN group by 出版年份 order by count(出版年份) desc ) where rownum=1;


7、 哪本借书证未归还的图书最多?
select * from (select 借书证号 from 借阅 where 归还日期 is null group by 借书证号 order by count(借书证号) desc) where rownum=1;

8、平均每本借书证的借书册数。
select 借书证号, count(借书证号) from 借阅 group by 借书证号;

9、哪个单位的读者平均借书册数最多?
select 读者.单位 from 读者 where 读者.借书证号 in (select 借书证号 from (select 借书证号, count(借书证号) from 借阅 group by 借书证号 order by count(借书证号) desc) where rownum=1);

10、 最近两年都未被借过的书。
select 图书.图书编号,书目.书名,书目.作者 from 图书,书目,借阅 where 图书.图书编号=借阅.图书编号 and 书目.ISBN=图书.ISBN and 借阅.借书日期 not between to_date('20180101','yyyy/mm/dd') and to_date('20191231','yyyy/mm/dd');

11、今年未借过书的借书证。
select 读者.借书证号 from 读者 where 读者.借书证号 not in (select 借阅.借书证号 from 借阅 where 借阅.借书日期 between to_date('20190101','yyyy/mm/dd') and to_date('20191231','yyyy/mm/dd'));


  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用Oracle数据库时出现乱码问题可能是由于以下原因导致的: 1. 数据库字符集不匹配:数据库的字符集与应用程序或客户端的字符集不一致可能导致乱码问题。可以通过检查数据库字符集及设置应用程序或客户端字符集来解决乱码问题。 2. 字符编码错误:在数据库操作过程中,如果没有正确指定字符编码,可能会导致数据保存或读取时出现乱码。使用适当的字符编码进行数据库连接及数据操作可以解决该问题。 3. 字段长度不够:当某些数据的长度超过了数据库表字段的定义长度时,存储的数据可能会被截断或转换为乱码。检查表中字段的定义长度,确认是否需要进行扩展,以避免数据截断或转码导致的乱码问题。 4. 数据库版本不兼容:不同版本的Oracle数据库可能对字符集的支持存在差异,在进行数据库升级或迁移时可能会导致乱码问题。确保使用相同或兼容的数据库版本,或通过字符集转换等方法解决乱码问题。 5. 数据库连接配置问题:应用程序或客户端与数据库的连接配置可能存在问题,比如未正确指定字符集、语言等。检查连接配置,确保正确设置相关参数以避免乱码问题的发生。 解决乱码问题的具体方法取决于具体情况,可以根据问题的原因进行相应的调整和处理。建议在使用Oracle数据库时,根据实际需求选择合适的字符集、字符编码以及连接配置,同时注意数据长度和数据库版本兼容性,以避免乱码问题的出现。如果问题仍然存在,可以参考Oracle官方文档或寻求专业的数据库技术支持来获得进一步的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值