ORACLR数据库应用试题AA卷标准答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1四川师范大学成都学院《ORACLE数据库应用》A卷标准答案一、选择题(每小题1分,共15分、不选、错选均不得分)1-5AABBDA6-10AADDA11-15DABCC二、操作题(共6小题,共30分)1、(4分)使用SQL命令创建一个本地管理方式下的自动分区管理的表空间USERTBS1,其对应的数据文件大小为20MB。createtablespaceUSERTBS1datafile'd:\oracle\oradata\orcl\usertbs1.dbf'size50Mextentmanagementlocalautoallocate;2、(2分)为USERTBS1表空间添加一个数据文件,以改变该表空间的大小。altertablespaceUSERTBS1adddatafile'd:\oracle\oradata\orcl\usertbs2a.dbf'size50M;3、(1分)使用SQL命令对USERTBS1表空间设置为联机状态。altertablespaceUSERTBS1online;4、(10分)表空间USERTBS1中,利用SQL语句创建DEPT、EMP两个表。CREATETABLEDEPT(deptnoINTPRIMARYKEY,--主键(唯一,非空)dnameCHAR(15)NOTNULL,--部门名称,非空(必填)locVARCHAR(30)--部门位置,允许为空,即可选输入)TablespaceUSERTBS1CREATETABLEEMP(empnoINTPRIMARYKEY,--雇员编号,主键enameVARCHAR(10)NOTNULL,--雇员姓名esexVARCHAR(2)NULL,jobVARCHAR(9),--工种salDECIMAL(7,2)NOTNULL,--工资deptnoINTNOTNULL,--雇员所在部门号,外键CONSTRAINTemp_deptno_fkFOREIGNKEY(deptno)REFERENCESdept(deptno))TablespaceUSERTBS15、(3分)为EMP表的sal列添加一个检查约束,要求雇员工资少于3000。2ALTERTABLEempADDCONSTRAINTck_salCHECK(sal=3000)6、(3分)为EMP表的sal列添加一个默认值约束,sal(工资)的默认值是800。ALTERTABLEEMPADDCONSTRAITNTdf_salDEFAULT800FORsal7、(3分)在表空间USERTBS1中,创建一个EMP_LIST表(列、类型与EMP表的列、类型相同),按中员工性别分为两个区。createtableEMP_list(snonumber(4)primarykey,snamevarchar2(10),sagenumber,sexchar(2),cnonumber(2))partitionbylist(sex)(partitionmanvalues('M')tablespaceorcltbs1,partitionwomanvalues('F')tablespaceorcltbs2)8、(4分)在表空间USERTBS1中,创建一个用户user,口令为user,在该表空间的配额为10MB,初始状态为锁定。CREATEUSERuserIDENTIFIEDBYuserDEFAULTTABLESPACEUSERTBS1QUOTA10MONUSERTBS1ACCOUNTLOCK;三、、简答题(简答题(共5小题,共5x3=15分))1.简述PL/SQL程序结构及各个部分的作用。答:(3分)PL/SQL程序的基本单元是语句块,所有的PL/SQL程序都是由语句块构成的,语句块之间可以相互嵌套,每个语句块完成特定的功能。声明部分:以关键字DECLARE开始,BEGIN结束。主要用于声明变量、常量、数据类型、游标、异常处理名称以及本地(局部)子程序定义等。执行部分:是PL/SQL块的功能实现部分,以关键字BEGIN开始,EXCEPTION或END结束(如果PL/SQL块中没有异常处理部分,则以END结束)。该部分通过变量赋值、流程控制、数据查询、数据操纵、数据定义、事务控制、游标处理等实现块的功能。异常处理部分:以关键字EXCEPTION开始,END结束。该部分用于处理该块执行过程中产生的异常。2.说明触发器的种类和对应的作用对象、触发事件。答:(3分)触发器包括DML触发器、INSTEAD-OF触发器和系统触发器。其中,DML触发器主要作用于表,其事件有INSERT、UPDATE、DELETE;INSTEAD-OF触发器主要主用于视图,其事件有INSERT、UPDATE、DELETE;系统触发器主要是DML事件和系统事件发生时调用的触发器,其中DML事件包括CREATE、DROP、ALTER等,系统事件包括LOGON、3LOGOFF、STARTUP、SHUTDOWN、SERVERERROR等。3.简述Oracle数据库物理存储结构的组成及其关系。答:(3分)Oracle数据库物理结构包括数据文件、控制文件、重做日志文件、初始化参数文件、归档文件、口令文件等。在控制文件中记录了当前数据库所有的数据文件的名称与位置、重做日志文件的名称与位置,以及数据文件、重做日志文件的状态等。4.简述说明数据库逻辑存储结构的组成和相互关系答:(3分)Oracle数据库的逻辑存储结构分为数据块、区、段和表空间四种。其中,数据块是数据库中的最小I/O单元,由若干个连续的数据块组成的区是数据库中最小的存储分配单元,由若干个区形成的段是相同类型数据的存储分配区域,由若干个段形成的表空间是最大的逻辑存储单元,所有的表空间构成一个数据库。5、Oracle数据库中给用户授权的方法有哪几种,如何实现?在Oracle数据库中,将权限授予用户有2种方法:直接授权,利用GRANT命令直接为用户授权;间接授权,先将权限授予角色,然后再将角色授予用户。四、编程题(共4分)1、(20分)创建一个包,(1)包中包含一个函数和一个过程。(2)函数以部门号为输入参数,返回部门名、部门人数及部门平均工资。(3)过程,以员工号为输入参数,修改该员工的工资。若该员工属于10号部门,则工资增加150;若属于20号部门,则工资增加200;若属于30号部门,则工资增加250;若属于其他部门,则工资增加300。(4)调用软件包中的函数,输出部门名、部门人数及部门平均工资;(5)调用软件包中的过程,修改该员工的工资。(1)CREATEORREPLACEPACKAGEpkg_empASv_deptnoemp.deptno%TYPE;v_incemp.sal%TYPE;v_dnamedept.dname%TYPE;e_beyondboundEXCEPTION;PROCEDUREUPDATESAL(p_empnoemp.empno%TYPE);FUNCTIONret_deptinfo(p_deptnodept.deptno%TYPE,p_numOUTNUMBER,p_avgOUTNUMBER);ENDpkg_emp;(2)4FUNCTIONret_deptinfo(p_deptnodept.deptno%TYPE,p_numOUTNUMBER,p_avgOUTNUMBER)RETURNdept.dname%TYPEASBEGINSELECTdnameINTOv_dnameFROMdeptWHEREdeptno=p_deptno;SELECTcount(*),avg(sal)INTOp_num,p_avgFROMempWHEREdeptno=p_deptno;RETURNv_dname;ENDret_maxsal;(3)PROCEDUREUPDATESAL(p_empnoemp.empno%TYPE)ASBEGINSELECTdeptnoINTOv_deptnoFROMempWHEREempno=p_empno;CASEv_deptnoWHEN10THENv_inc:=150;WHEN20THENv_inc:=200;WHEN30THENv_inc:=250;ELSEv_inc:=300;ENDCASE;UPDATEempSETsal=sal+v_incWHEREempno=p_empno;END;(4-5)BEGINpkg_emp.update_sal(7844);pkg_emp.add_employee(10);END;2、(7分)创建一个显示、回滚事务,实现下面的银行转账建立账户表bank,包括客户名字和当前余额,银行规定,帐户余额不能少于1元,否则视为销户。账户表(bank)customerName(用户名)currentMoney(余额:元)Scott1000Smith1模拟过程如下:插入测试数据,Scott开户,开户金额为1000元;Smith开户,开户金额为1元,假定将Scott账户直接转1000元到Smith账户,查看Scott和Smith的余额后开始转账事务,如果转账失败,输出“交易失败,回滚事务”信息后进行事务回滚,如果转账成功,输出“交易成功,提交事务,永久保存”信息后提交结束事务。并查看转账后Scott和Smith的余额。5USEempDBGOSETNOCOUNTON--不显示受影响的行数信息print‘查看转帐事务前的余额’SELECT*FROMbankGO/*--开始事务(指定事务从此处开始,后续的T-SQL语句都是一个整体)*/BEGINTRANSACTION/*定义变量,用于累计事务执行过程中的错误--*/DECLARE@errorNoINTSET@errorNo=0--初始化为0,即无错误/*--张三的帐户减少1000元,李四的帐户多1000元*/UPDATEbankSETcurrentMoney=currentMoney-1000WHEREcustomerName=’张三’Set@errorNo=@errorNo+@@error--累计是否有错误Print‘查看转帐过程中的余额’SELECT*FROMbank/*--根据语句执行情况,确定事务是提交或撤消--*/IF@errorNo0--如果有错误BEGINPrint‘交易失败,回滚事务’ROLLBACKTRANSACTIONENDELSEBEGINPrint‘交易成功,提交事务,永久保存’COMMITTRANSACTIONENDGOPrint‘查看转帐事务后的余额’SELECT*FROMbankGO3、(7分)在emp表上创建一个触发器,修改员工工资时,保证修改后的工资高于修改前的工资。CREATEORREPLACETRIGGERtrg_emp_update_rowBEFOREUPDATEOFsalONempFOREACHROWWHEN(new.sal=old.sal)BEGINRAISE_APPLICATION_ERROR(6-20001,'Thesalaryislower!');ENDtrg_emp_update_row;4、(6分)用JAVA编写用JDBC连接ORACLE数据库的函数。privateConnectionnewConnection(Stringuser,Stringpassword){Connectioncon=null;try{Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();con=DriverManager.getConnection(“jdbc:oracle:thin:@192.168.96.1:1521:oracle9i”,user,password);}catch(SQLExceptione){returnnull;}returncon;}

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功