- --1. 创建用户及表,并设置相应的约束
- --1.图书信息表
- --字段名称 数据类型 是否可为空
- --图书编号(PK) varchar(20) 否
- --书名 varchar(50) 否
- --作者 varchar(12) 否
- --出版社 varchar(50) 是
- --出版日期 date 是
- --介绍 varchar(200) 是
- create table Bookinfo
- (
- BookID varchar(20) not null primary key,
- BookName varchar(50) not null ,
- Author varchar(12) not null,
- Press varchar(50) ,
- PublictionDate date,
- Introduce varchar(200)
- );
- --2.读者信息表
- --字段名称 数据类型 是否可为空
- --读者学号(PK,identity)int 否
- --读者姓名 varchar(10) 否
- --读者性别(只能为男或女)varchar(2) 否
- --所在系 varchar(12) 否
- --生效时间 datatime 是
- --失效时间 datatime 是
- --累计借书 int 是
- create table Readerinfo
- (
- ReaderID int not null primary key ,
- ReaderName varchar(10) not null,
- Sex varchar(3) check(sex='男'or sex='女') not null,
- dept varchar (12) not null,
- StartDate date ,
- EndDate date,
- Counts int
- );
- --3.借阅表
- --字段名称 数据类型 是否可为空
- --图书编号 char(10) 否
- --读者学号 int 否
- --借书日期 datetime 否
- --还书日期 datetime 否
- create table borrow
- (
- bookID varchar(20) not null,
- readerID int not null,
- startDate date not null,
- endDate date not null
- );
- --2. 使用语句插入下列数据
- --(1) 向读者信息表中插入如下数据
- --读者学号,读者姓名,读者性别,所在系,生效日期,失效日期
- --1001,刘晨,男,计算机系,2009-9-20,2010-12-31
- --1002,张克非,男,计算机系,2009-5-26,2010-8-6
- --1003,李菲菲,女,通信系,2009-6-8,2010-9-7
- --1004,张延,男,信息工程,2009-3-1,2010-6-7
- insert into Readerinfo values(1001,'刘晨','男','计算机系',to_date('2009-09-20','YYYY-MM-DD'),to_date('2010-12-31','YYYY-MM-DD'),null);
- insert into Readerinfo values(1002,'张克非','男','计算机系',to_date('2009-05-26','YYYY-MM-DD'),to_date('2010-08-06','YYYY-MM-DD'),null);
- insert into Readerinfo values(1003,'李菲菲','女','通信系',to_date('2009-06-08','YYYY-MM-DD'),to_date('2010-09-07','YYYY-MM-DD'),null);
- insert into Readerinfo values(1004,'张延','男','信息工程',to_date('2009-03-01','YYYY-MM-DD'),to_date('2010-06-07','YYYY-MM-DD'),null);
- --(2) 向图书信息表中插入如下信息
- --图书编号,书名,作者,出版社,出版日期
- --C0001, 琴岛帆影,郭同文,作家出版社,2008-8
- --C0002,网页制作案例教程,高林,人民邮电出版社,2008-5
- --C0003,phtoshopCS2版,王燕南,北京艺术与科学电子出版社,2008-12-28
- --C0004,计算机组成原理,王爱英,清华大学出版社,2001-1-3
- --C0005,C程序设计,谭浩强,清华大学出版社,2002-4-2
- --C0006,计算机体系结构,石教英,浙江大学出版社,2004-10-3
- insert into Bookinfo values('C0001','琴岛帆影','郭同文','作家出版社',to_date('2008-08','YYYY-MM'),null);
- insert into Bookinfo values('C0002','网页制作案例教程','高林','人民邮电出版社',to_date('2008-05','YYYY-MM'),null);
- insert into Bookinfo values('C0003','phtoshopCS2版','王燕南','北京艺术与科学电子出版社',to_date('2008-12-28','YYYY-MM-DD'),null);
- insert into Bookinfo values('C0004','计算机组成原理','王爱英','清华大学出版社',to_date('2001-01-03','YYYY-MM-DD'),null);
- insert into Bookinfo values('C0005','C程序设计','谭浩强','清华大学出版社',to_date('2002-04-02','YYYY-MM-DD'),null);
- insert into Bookinfo values('C0006','计算机体系结构','石教英','浙江大学出版社',to_date('2004-10-03','YYYY-MM-DD'),null);
- --(3) 向借阅表中添加信息
- --读者学号,ISBN,借书日期,还书日期(为借书日期加上30天,使用dateAdd(dd,30,日期)(oracle没有此函数))
- --1001,C0004,2009-10-9
- --1002,C0001,2009-6-7
- --1002,C0005,2009-6-7
- --1004,C0006,2009-4-5
- --1004,C0002,2009-8-9
- --1004,C0003,2009-8-9
- --注意这里字段的顺序。
- --注意这里add_months(to_date('2009-10-09','YYYY-MM-DD'),1)的用法。
- 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));
- 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));
- 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));
- 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));
- 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));
- 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));
- --3. 使用查询语句完成下列要求
- --(1) 查询没有借过书的学生有哪些
- select * from READERINFO
- where READERID not in(
- select READERID from BORROW
- );
- --(2) 查询含有“计算机”三个字的的书有哪些
- select * from BOOKINFO
- where BOOKNAME like '%计算机%';
- --(3) 查询所有读者的借书情况,要求显示读者名及书名
- select READERINFO.READERNAME,BOOKINFO.BOOKNAME
- from READERINFO ,BORROW , BOOKINFO
- where READERINFO.READERID=BORROW.READERID and BORROW.BOOKID=BOOKINFO.BOOKID;
- --(4) 查询借书最多的读者有哪些
- select * from(
- select readerinfo.READERname,count(bookid)
- from BORROW join READERINFO on READERINFO.READERID=BORROW.READERID
- group by readerinfo.READERname
- order by count(bookid) desc
- )
- where rownum=1;
- --4. 使用修改命令完成下列要求
- --(1)将计算机专业的读者借书的还书日期再加30天
- update BORROW set ENDDATE=ENDDATE+30
- where READERID in(
- select readerID from READERINFO
- where dept='计算机系');
- --5. 使用删除命令完成下列要求
- --(1) 把刘晨的借书记录都删除掉
- delete from BORROW
- where READERID=(
- select readerid from readerinfo
- where readername='刘晨'
- );
- --6. 创建一个名为“检索借书数量”的存储过程,该存储过程使用“借书详情”视图,检索指定读者借了多少本书
- --注意事项:
- --1, 存储过程参数不带取值范围,in表示传入,out表示输出
- --2, 变量带取值范围,后面接分号
- --3, 在判断语句前最好先用count(*)函数判断是否存在该条操作记录
- --4, 用select 。。。into。。。给变量赋值
- --5, 在代码中抛异常用 raise+异常名
- create or replace procedure borrowcount(P_readername in varchar)
- as
- num int;
- begin
- select count(bookid) into num
- from READERINFO join BORROW on READERINFO.READERID=borrow.readerid
- where readername=P_readername;
- dbms_output.put_line(num);
- end;
- --7. 调用“检索借书数量”存储过程,检索张延借了多少本书
- begin
- borrowcount('张延');
- end;
图书馆
最新推荐文章于 2021-12-16 09:52:52 发布