Oracle测试题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle试题

(数据库技术及应用)

学号姓名分数(一) 按照题意写出SQL语句(45分每题3分)

本题用到下面三个关系表:

借书卡card(cno卡号,name姓名,class班级)

图书books(bno书号,bname书名,author作者,price 单价,quantity库存册数) 借书记录borrow (cno借书卡号,bno书号,rdate还书日期)

注:限定每人每种书只能借一本;库存册数随借书、还书而改变。

1.写出建立borrow表的SQL语句,要求定义主码完整性约束和引用完整性约束。create table card

(cno char(6) primary key,

name varchar2(10),

class varchar2(12)

);

create table books

(bno char(8) primary key,

bname varchar2(50),

author varchar2(10),

price number(5,3),

quantity number(4)

);

create table borrow

(cno char(6) references card(cno) on delete cascade,

bno char(8) references books(bno) on delete cascade,

rdate date,

primary key(cno,bno)

);

2.找出借书超过5本的读者,输出借书卡号及所借图书册数。

select cno,count(*) 册数

from borrow

group by cno

having count(*)>5;

3.查询借阅了“水浒”一书的读者,输出姓名及班级。

select name,class

from card

where cno in (

select cno

from borrow

where bno=(

select bno

from books

where bname='水浒'

)

)

;

4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。

select o,bno,rdate

from card c,borrow b

where o=o and b.rdate

5.查询书名包括“网络”关键词的图书,输出书号、书名、作者。

select bno,bname,author

from books

where bname like '%网络%';

6.查询现有图书中价格最高的图书,输出书名及作者。

select bname,author

from books

where price in (

select max(price)

from books

)

;

7.查询当前借了“计算方法”但没有借“计算方法习题集”的读者,输出其借书卡号,并按卡号降序排序输出。

select cno

from borrow

where bno=(

select bno

from books

where bname='计算方法'

)

and bno not in (

select bno

from books

where bname='计算机方法习题集'

)

order by cno desc

;

8.将“c01”班同学所借图书的还期都延长一周。

update borrow

set rdate=rdate+7

where cno in (

select cno

from card

where class='c01'

)

;

commit

;

9.从books表中删除当前无人借阅的图书记录。

from books

where bno not in (

select bno

from borrow

)

;

10.如果经常按书名查询图书信息,请建立合适的索引。

create index bname_idx on books(bname);

11.在borrow表上建立一个触发器,完成如下功能:如果读者借阅的书名是“数据库技术及应用”,就将该读者的借阅记录保存在borrow_save表中(注:borrow_save表结构同borrow表)。

create table borrow_save as

(select * from borrow)

;

delete borrow_save;

commit;

create or replace trigger borrow_in

after insert

on borrow

for each row

declare

s books.bno%type;

begin

select bno into s from books where bname='数据库技术及应用';

if s=:new.bno then

insert into borrow_save

values (:o,:new.bno,:new.rdate);

end if;

end;

/

12.建立一个视图,显示“力01”班学生的借书信息(只要求显示姓名和书名)。create view ca_view as

(select name,bno

from card c,borrow b

where o=b.bno and c.class='力01'

);

13.查询当前同时借有“计算方法”和“组合数学”两本书的读者,输出其借书卡号,并按卡号升序排序输出。

(select cno

from borrow

where bno=( select bno

from books

where bname='计算方法'

))

相关文档
最新文档