Oracle测试题及答案_第1页
Oracle测试题及答案_第2页
Oracle测试题及答案_第3页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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,n ame

2、 varchar2(10),class varchar2(12);create table books(bno char(8) primary key,bn ame varchar2(50),author varchar2(10),price nu mber(5,3),qua ntity nu mber(4);create table borrow(cno char(6) references card(c no) on delete cascade,bno char(8) referen ces books(b no) on delete cascade,rdate date,primary

3、 key(c no,bno);2 .找出借书超过5本的读者,输出借书卡号及所借图书册数。select cno ,co un t(*)册数from borrowgroup by cnohav ing coun t(*)>5;3 查询借阅了 “水浒”一书的读者,输出姓名及班级。select n ame,classfrom cardwhere cno in (select cnofrom borrowwhere bno=(select bnofrom bookswhere bname=' 水浒'4 查询过期未还图书,输出借阅者(卡号)、书号及还书日期。select o,bno,

4、 rdatefrom card c,borrow bwhere o=b.c no and b.rdate<sysdate;5 查询书名包括“网络”关键词的图书,输出书号、书名、作者。select bno,bn ame,authorfrom bookswhere bn ame like % 网络 %'6 .查询现有图书中价格最高的图书,输出书名及作者。select bn ame,authorfrom bookswhere price in (select max(price)from books)57 查询当前借了“计算方法”但没有借“计算方法习题集”的读者,输出其借书卡号,并 按

5、卡号降序排序输出。select enofrom borrowwhere bno=(select bnofrom bookswhere bname='计算方法')and bno not in (select bnofrom bookswhere bname='计算机方法习题集')order by eno desc5&将“ c01 ”班同学所借图书的还期都延长一周。update borrowset rdate=rdate+7where eno in (select enofrom cardwhere class='c01')5commit59

6、 .从books表中删除当前无人借阅的图书记录。select *from bookswhere bno not in (select bnofrom borrow)510 如果经常按书名查询图书信息,请建立合适的索引。create in dex bn ame_idx on books(b name);11 在borrow表上建立一个触发器, 完成如下功能:如果读者借阅的书名是 “数据库技术 及应用”,就将该读者的借阅记录保存在 borrow_save 表中(注:borrow_save 表结构同 borrow 表)。create table borrow_save as(select * fro

7、m borrow)5delete borrow_save;commit;create or replace trigger borrow_ inafter in serton borrowfor each rowdeclares books.b no%type;beginselect bno into s from books where bn ame='数据库技术及应用 'if s=:n ew.b no the ninsert into borrow_savevalues (:n ew.c no,: new.b no,: new.rdate);end if;en d;/12

8、建立一个视图,显示“力01 ”班学生的借书信息(只要求显示姓名和书名)。create view ca_view as(select n ame,b nofrom card c,borrow bwhere o=b.bno and c.class='力 01');13 查询当前同时借有“计算方法”和“组合数学”两本书的读者,输出其借书卡号,并 按卡号升序排序输出。(select enofrom borrowwhere bno=( select bnofrom bookswhere bname='计算方法')in tersect(select enofrom borr

9、owwhere bno=( select bnofrom bookswhere bname='组合数学')order by eno;14 .假定在建books表时没有定义主码,写出为 books表追加定义主码的语句。Alter table booksAdd(primary key (bno);15 .对card 表做如下修改:将name最大列宽增加到10个字符(假定原为 6个字符)。为该表增加1列:dname (系名),可变长,最大20个字符。alter table cardadd(d name varchar2(20)modify (n ame varchar2(10);(二

10、)简要回答下列问题(30分,每题3分)1. 数据库中“事务”的概念是什么?在数据库应用中它起什么作用?事务时数据库系统中处理的最小单位。一个事物是由一个或多个逻辑相关的SQL语句组成,这些语句共同完成某项任务。由这些SQL语句所引起的数据库中数据的变化要么“提交”(江事务对数据库所作的全部修改永久化)、要么回滚(事物的修改工作全部撤销),这就是事务的原子性。事务可以保证各种程序的正确执行,利用事务可确保数据库中数据的完整性和一致性。2 .什么是“写丢失”问题?在 Oracle数据库中如何解决“写丢失”?当第一个用户想对某一数据进行修改时,现将该数据读入存中还为修改写回数据库时,这时第二个用户也

11、将这个数据读入存中,他们读到一致的数据,用户一开始修改该数据然后将修改写回数据库中,这时用户二也将数据进行了修改随后也将修改后的数据写回数据库中,这时就发生了写丢失,用户二对数据库的修改覆盖了用户一的修改工作。解决两个写事务冲突的办法就是采用“加锁”机制。例如A、B两个事务同时对一个表的某航数据进行修改,A事务首先修改时对该数据加锁,禁止其他事务对该数据的修改。 只有 当A事务完成修改工作、并将锁打开后,其他事物才被允许修改。这时候等待的B事务才可以对该数据进行修改。锁可以防止两个写事务同时对一个数据进行修改,所以也就不会出现写丢失的错误。3“触发器”和“存储过程”有什么异同(在它们的定义中,

12、 都定义了一段PL/SQL程序)? 存储过程 将常用的或很复杂的工作, 预先用SQL语句写好并用一个指定的名称存储起来 ,那 么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。它是作为数据库对象存储在数据库中的子程序。触发器一个与表相关联的、被存储的PL/SQL程序,每当一个特定的数据操作语句在指定的 表上发生时,就会引发触发器的执行。与存储过程的调用方式不同,触发器的执行时采用处罚机制。两者的应用方向也不同,触发器实现表措作的前处理和后处理(如表别修改时,给其他需运行的程序发信号)。也应用在审计,可以跟踪表上所实现的数据操作。4. 建立一个

13、“快照”,实现如下功能:每周六的晚上 11点,将远程数据库上user1用户(其帐号的密码为 abc )下的emp表中容复制到本地。请写出建立数据库链的语句和建立快照的语句(注:题中未给出的信息可由你来设定)。create database link user_li nkconnet to userl identified by abcus ing 'db 8i2:create sn apshot user_copyrefresh completestart with sysdaten ext_day( trun c(sysdate),'星期六/24) +asselect * f

14、rom empuser_li nk;5. 在SQL*Plus环境中,如何查看你自己建立了哪些表?如何查看一个表的结构如何?select * from user_table; Select table_ name from dba_tables where owner='用户名;desc table name;6 .已知关系 R(U,F),U =( A,B,C,D,E),F=A->B, B->C, CD->E给出关系R的码,并写出求解依据。关系R满足第几式,并说出其理由。因为 A->B,B->C所以 A->C;CD->E因此 AD->E ,

15、 AD->CD,AD->BD故 AD->ABCDEAD->(A,B,C,D,E)码是AD7 与关系数据库相比,对象关系数据库在哪些方面做了扩充?对象关系数据库与关系数据库相比,在以下两方面做了扩充:(1) 支持对象模型,实现了面向对象数据库的基本功能在对象关系数据库中,同时支持关系模型和对象模型,同时存在两种不同类型的二维表:关系表和对象表;(2) 对象关系数据库扩充了关系数据库的数据类型,支持用户自定义的数据类型;目前ORACLE已支持三种新的数据类型:对象类型、数组类型和嵌套表类型。&什么是外来码?它在关系数据库中起什么作用?外来码是为不同关系表中数据之间完

16、整性和一致性定义的引用完整性约束。外来码是多表之间联系的纽带。在关系数据库中用外来码保证多表之间数据的一致性和完整性。9.请你通过一个例子,说明PL/SQL块嵌套的应用。DECLAREtin _rectin % rowtype ;v_passwd userlog.passwd % type ;error EXCEPTION;mark INTEGER;BEGINBEGIN/嵌套块1select * into tin_rec from tin ;EXCEPTIONWHEN NO_DATA_FOUND THENMark=1;RASIE error;ENDBEGIN/嵌套块2select passwd

17、 into v_passwdfrom userlogwhere userid = tin _rec.ud ;EXCEPTIONWHEN NO_DATA_FOUND THENMark=2;RASIE error;END;if v_passwd = tin _rec.psthe nin sert into tout values( elsein sert into tout values( end if ;excepti onwhe n errorthe nif mark=1 the ninsert into tout values(else mark=2 the ninsert into tou

18、t values( end if;'用户输入正确''用户密码错误';'输入没准备好';'账号不正确';);en d;10 .在Delphi的应用开发中,如果采用 TQuery组件,并且在执行时动态为它指定如下语句:update emp set sal = sal +200 where en ame='明'请写出有关程序代码判片断(为Query1对象的SQL属性添加update 语句,并利用Query的方法执行该update 语句)在 form1 中建立 database1 、Tquery1、datasource1 、button1 等对象 在query1的SQL语句编辑器中不输入任何语句更新按钮的click事件procedure TForm1.Butto n1Click(Se nder: TObject); beginquery1.Close;query1.SQL.Clear ;query1.sql.Add('update books set sal= sal +200'); query1.SQL .add('where

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论