图书馆

  1. --1.    创建用户及表,并设置相应的约束  
  2. --1.图书信息表   
  3. --字段名称           数据类型               是否可为空  
  4. --图书编号(PK)       varchar(20)                否  
  5. --书名               varchar(50)                否  
  6. --作者               varchar(12)                否  
  7. --出版社             varchar(50)                是  
  8. --出版日期           date                   是  
  9. --介绍               varchar(200)               是  
  10. create table Bookinfo  
  11. (  
  12.   BookID varchar(20) not null primary key,  
  13.   BookName varchar(50) not null ,  
  14.   Author varchar(12) not null,  
  15.   Press varchar(50) ,  
  16.   PublictionDate date,  
  17.   Introduce varchar(200)  
  18. );  
  19. --2.读者信息表  
  20. --字段名称           数据类型               是否可为空        
  21. --读者学号(PK,identity)int                     否  
  22. --读者姓名           varchar(10)                否  
  23. --读者性别(只能为男或女)varchar(2)              否  
  24. --所在系             varchar(12)                否  
  25. --生效时间           datatime                   是  
  26. --失效时间           datatime                   是  
  27. --累计借书           int                        是  
  28. create table Readerinfo  
  29. (  
  30. ReaderID int not null primary key ,  
  31. ReaderName varchar(10) not null,  
  32. Sex varchar(3) check(sex='男'or sex='女'not null,  
  33. dept varchar (12) not null,  
  34. StartDate date ,  
  35. EndDate date,  
  36. Counts int   
  37. );  
  38. --3.借阅表  
  39. --字段名称          数据类型                是否可为空  
  40. --图书编号          char(10)                    否  
  41. --读者学号          int                    否  
  42. --借书日期          datetime                    否  
  43. --还书日期          datetime                    否  
  44. create table borrow  
  45. (  
  46.   bookID varchar(20) not null,  
  47.   readerID int not null,  
  48.   startDate date not null,  
  49.   endDate date not null  
  50. );  
  51. --2.    使用语句插入下列数据  
  52. --(1)   向读者信息表中插入如下数据  
  53. --读者学号,读者姓名,读者性别,所在系,生效日期,失效日期  
  54. --1001,刘晨,男,计算机系,2009-9-20,2010-12-31  
  55. --1002,张克非,男,计算机系,2009-5-26,2010-8-6  
  56. --1003,李菲菲,女,通信系,2009-6-8,2010-9-7  
  57. --1004,张延,男,信息工程,2009-3-1,2010-6-7  
  58. insert into Readerinfo values(1001,'刘晨','男','计算机系',to_date('2009-09-20','YYYY-MM-DD'),to_date('2010-12-31','YYYY-MM-DD'),null);  
  59. insert into Readerinfo values(1002,'张克非','男','计算机系',to_date('2009-05-26','YYYY-MM-DD'),to_date('2010-08-06','YYYY-MM-DD'),null);  
  60. insert into Readerinfo values(1003,'李菲菲','女','通信系',to_date('2009-06-08','YYYY-MM-DD'),to_date('2010-09-07','YYYY-MM-DD'),null);  
  61. insert into Readerinfo values(1004,'张延','男','信息工程',to_date('2009-03-01','YYYY-MM-DD'),to_date('2010-06-07','YYYY-MM-DD'),null);  
  62. --(2)   向图书信息表中插入如下信息  
  63. --图书编号,书名,作者,出版社,出版日期  
  64. --C0001, 琴岛帆影,郭同文,作家出版社,2008-8  
  65. --C0002,网页制作案例教程,高林,人民邮电出版社,2008-5  
  66. --C0003,phtoshopCS2版,王燕南,北京艺术与科学电子出版社,2008-12-28  
  67. --C0004,计算机组成原理,王爱英,清华大学出版社,2001-1-3  
  68. --C0005,C程序设计,谭浩强,清华大学出版社,2002-4-2  
  69. --C0006,计算机体系结构,石教英,浙江大学出版社,2004-10-3  
  70. insert into Bookinfo values('C0001','琴岛帆影','郭同文','作家出版社',to_date('2008-08','YYYY-MM'),null);  
  71. insert into Bookinfo values('C0002','网页制作案例教程','高林','人民邮电出版社',to_date('2008-05','YYYY-MM'),null);  
  72. insert into Bookinfo values('C0003','phtoshopCS2版','王燕南','北京艺术与科学电子出版社',to_date('2008-12-28','YYYY-MM-DD'),null);  
  73. insert into Bookinfo values('C0004','计算机组成原理','王爱英','清华大学出版社',to_date('2001-01-03','YYYY-MM-DD'),null);  
  74. insert into Bookinfo values('C0005','C程序设计','谭浩强','清华大学出版社',to_date('2002-04-02','YYYY-MM-DD'),null);  
  75. insert into Bookinfo values('C0006','计算机体系结构','石教英','浙江大学出版社',to_date('2004-10-03','YYYY-MM-DD'),null);  
  76. --(3)   向借阅表中添加信息  
  77. --读者学号,ISBN,借书日期,还书日期(为借书日期加上30天,使用dateAdd(dd,30,日期)(oracle没有此函数))  
  78. --1001,C0004,2009-10-9  
  79. --1002,C0001,2009-6-7  
  80. --1002,C0005,2009-6-7  
  81. --1004,C0006,2009-4-5  
  82. --1004,C0002,2009-8-9  
  83. --1004,C0003,2009-8-9  
  84. --注意这里字段的顺序。  
  85. --注意这里add_months(to_date('2009-10-09','YYYY-MM-DD'),1)的用法。  
  86. insert into borrow values('C0004',1001,to_date('2009-10-09','YYYY-MM-DD'),add_months(to_date('2009-10-09','YYYY-MM-DD'),1));  
  87. insert into borrow values('C0001',1002,to_date('2009-06-07','YYYY-MM-DD'),add_months(to_date('2009-06-07','YYYY-MM-DD'),1));  
  88. insert into borrow values('C0005',1002,to_date('2009-06-07','YYYY-MM-DD'),add_months(to_date('2009-06-07','YYYY-MM-DD'),1));  
  89. insert into borrow values('C0006',1004,to_date('2009-04-05','YYYY-MM-DD'),add_months(to_date('2009-04-05','YYYY-MM-DD'),1));  
  90. insert into borrow values('C0002',1004,to_date('2009-08-09','YYYY-MM-DD'),add_months(to_date('2009-08-09','YYYY-MM-DD'),1));  
  91. insert into borrow values('C0003',1004,to_date('2009-08-09','YYYY-MM-DD'),add_months(to_date('2009-08-09','YYYY-MM-DD'),1));  
  92. --3.    使用查询语句完成下列要求  
  93. --(1)   查询没有借过书的学生有哪些  
  94. select * from READERINFO  
  95. where READERID not in(  
  96. select READERID from BORROW  
  97. );  
  98. --(2)   查询含有“计算机”三个字的的书有哪些  
  99. select * from BOOKINFO   
  100. where BOOKNAME like '%计算机%';  
  101. --(3)   查询所有读者的借书情况,要求显示读者名及书名  
  102. select READERINFO.READERNAME,BOOKINFO.BOOKNAME  
  103. from READERINFO ,BORROW , BOOKINFO  
  104. where READERINFO.READERID=BORROW.READERID and BORROW.BOOKID=BOOKINFO.BOOKID;  
  105. --(4)   查询借书最多的读者有哪些  
  106. select * from(  
  107. select readerinfo.READERname,count(bookid)   
  108. from BORROW join READERINFO on READERINFO.READERID=BORROW.READERID  
  109. group by readerinfo.READERname  
  110. order by count(bookid) desc  
  111. )  
  112. where rownum=1;  
  113. --4.    使用修改命令完成下列要求  
  114. --(1)将计算机专业的读者借书的还书日期再加30天  
  115. update BORROW set ENDDATE=ENDDATE+30  
  116. where READERID in(  
  117. select readerID from READERINFO  
  118. where dept='计算机系');  
  119. --5.    使用删除命令完成下列要求  
  120. --(1)   把刘晨的借书记录都删除掉  
  121. delete from BORROW  
  122. where READERID=(  
  123. select readerid from readerinfo  
  124. where readername='刘晨'  
  125. );  
  126. --6.    创建一个名为“检索借书数量”的存储过程,该存储过程使用“借书详情”视图,检索指定读者借了多少本书  
  127. --注意事项:  
  128. --1,  存储过程参数不带取值范围,in表示传入,out表示输出  
  129. --2,  变量带取值范围,后面接分号  
  130. --3,  在判断语句前最好先用count(*)函数判断是否存在该条操作记录  
  131. --4,  用select 。。。into。。。给变量赋值  
  132. --5,  在代码中抛异常用 raise+异常名  
  133. create or replace procedure borrowcount(P_readername in varchar)  
  134. as  
  135. num int;  
  136. begin  
  137. select count(bookid) into num   
  138. from READERINFO join BORROW on READERINFO.READERID=borrow.readerid  
  139. where readername=P_readername;  
  140. dbms_output.put_line(num);  
  141. end;  
  142. --7.    调用“检索借书数量”存储过程,检索张延借了多少本书  
  143. begin  
  144. borrowcount('张延');  
  145. end;  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值