数据库管理技术复习题Word文件下载.docx
《数据库管理技术复习题Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库管理技术复习题Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
其中,NEXTVAL将返回序列生成的下一个值,而CURRVAL返回序列的当前值
D.在任何时候都可以使用序列的伪列CURRVAL,以返回当前序列值
11.替代触发器可以被附加到哪一类数据库对象上()C
A.表B.序列C.视图D.簇
12.下列哪个语句会终止事务()B
A.SAVEPOINTB.COMMIT
C.ENDTRANSACTIOND.ROLLBACKTOSAVEPOING
13.下列哪一个锁模式不属于Oracle()A
A.死锁B.排他锁C.行级共享锁D.共享锁
14.用户查询下列哪一个数据字典视图,可以查看他向其他用户授予的对象权限()C
A.DBA_SYS_PRIVSB.USER_TAB_PRIVS_MADE
C.USER_TAB_PRIVSD.USER_OBJ_PRIVS
15.若想导出(export)Scott用户的所有对象,该使用哪一种数据库导出(export)模式()B
A.tableB.userC.tablespaceD.fulldatabase
16.在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句()A
A.FETCHB.CLOSEC.OPEND.CURSOR
17.在Windows操作系统中,Oracle的()服务是使用iSQL*Plus必须的。
B
A.OracleHOME_NAMETNSListenerB.OracleServiceSID
C.OracleHOME_NAMEAgentD.OracleHOME_NAMEHTTPServer
18.使用哪一条SHUTDOWN语句关闭数据库时,下次打开数据库需要做恢复的操作()C
A.SHUTDOWNTRANSACTIONALB.SHUTDOWNIMMEDIATE
C.SHUTDOWNABORTD.SHUTDOWNNORMAL
19.ORACLE中,用来判断列值是否为空的操作符是()D
A==NULLBNULLISC.ASNULLD.ISNULL
20.根据以下在不同会话与时间点的操作,判断结果是多少()A
session1session2
------------------------------------------------------------------------------
T1selectcount(*)fromt;
--显示结果(1000)条
T2deletefromtwhererownum<
=100;
T3begin
deletefromtwhererownum<
commit;
end;
T4truncatetablet;
T5selectcount(*)fromt;
--这里显示的结果是多少?
A.800B.900 C.1000D.0
21.在Oracle中,一个用户拥有的所有数据库对象统称为()A
22.在Oracle数据库的逻辑结构中有以下组件:
A表空间B数据块C区D段,这些组件从大到小依次是()B
A.A→B→C→DB.A→D→C→BC.A→C→B→DD.D→A→C→B
23.在Oracle数据库中,()用户模式存储数据字典表和视图对象。
B
A.SYSTEMB.SYSC.SCOTTD.SYSDBA
24.下列哪个语句可以在SQL*Plus中直接调用一个过程()D
A.RETURNB.CALLC.SETD.EXEC
26.在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会引起序列值增加的是()C
A.selectseq.ROWNUMfromdual;
B.selectseq.ROWIDfromdual;
C.selectseq.CURRVALfromdual;
D.selectseq.NEXTVALfromdual;
28.Oracle提供的(),能够在不同硬件平台上的Oracle数据库之间传递数据。
D
A.归档日志运行模式B.RECOVER命令C.恢复管理器(RMAN)D.Export和Import工具
29.在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句()A
A.FETCHB.CLOSEC.OPEND.CURSOR
30.下列哪个子句实现对一个结果集进行分组和汇总()D
A.HAVINGB.ORDERBYC.WHERED.GROUPBY
31.对于下面的函数,哪个语句将成功地调用()A
CREATEORREPLACEFUNCTIONCalc_Sum(Addend_Xnumber,Addend_Ynumber)ReturnnumberAs
Sumnumber;
ReturnSum;
END;
=Calc_Sum(23,12)B.EXECUTECalc_Sum(45)
C.EXECUTECalc_Sum(23,12)D.Calc_Sum
33.有字符串数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为()C
A.1010B.44C.104D.410
34使用哪一条SHUTDOWN语句关闭数据库时,下次打开数据库需要做恢复的操作()C
A.SHUTDOWNTRANSACTIONALB.SHUTDOWNIMMEDIATE
C.SHUTDOWNABORTD.SHUTDOWNNORMAL
35.公用的子程序和常量在()中声明。
C
A.过程B.包规范C.游标D.包主体
18.若需在个人信息表的性别列上创建索引,以下最适合的是()
A.标准B.唯一C.分区D.位图
36.在Oracle中,使用HAVING子句也可以进行条件查询,以下选项说法是正确的是()C
A.HAVING子句和WHERE子句相同B.HAVING子句用于行的条件查询
C.HAVING子句用于已分组结果的条件查询D.以上皆非
37.如果服务器进程无法在数据缓冲区中找到空闲块,以添加从数据文件中读出的数据块,则系统会启动如下哪一个进程()D
A.CKPTB.SMONC.LGWRD.DBWR
38.在Oracle中,阅读下列PL/SQL块:
DECLARE
v_lowerNUMBER:
=2;
v_upperNUMBER:
=100;
v_countNUMBER:
=1;
REGIN
FORIINv_lower..v_lowerLOOP
INSERTINTOtest(results)
VALUES(v_count);
V_count:
=v_count+1;
ENDLOOP;
请问FORLOOP循环体执行了()次。
A.1B.2C.98D.0E)100
39.查看下面的语句创建了哪一种索引()?
CREATEINDEXtest_indexONstudent(stuno,sname)
TABLESPACEusersSTORAGE(INITIAL64k,next32k);
A.全局分区索引B.位图索引C.复合索引D.基于函数的索引
40下列哪一个动作不会激发一个触发器()?
A.更新数据B.查询数据C.删除数据D.插入数据
42.下列哪个对象属于模式对象?
()C
A.数据段B.盘区C.表D.表空间
43.在Oracle中创建用户时,若未提及DEFAULTTABLESPACE关键字,则Oracle就将()表空间分配给用户作为默认表空间。
A.HRB.SCOTTC.SYSTEMD.SYS
44.获得当前系统时间的查询语句是()。
A
A.SysdateB.SelectSysdateC.SelectSysdatefromdualD.以上都可以
45.下列哪一个锁模式不属于Oracle()。
A
46.PL/SQL过程和函数的参数模式不包括()。
A.inB.outC.inoutD.outin
47.EMP表有14条记录,则语句SELECT‘Aptech’FROMEMP的执行结果是()。
A.AptechB.无输出C.14行AptechD.编译出错
49.在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句。
A
A.FETCHB.CLOSEC.OPEND.CURSOR
50.ORACLE中,用来判断列值是否为空的操作符是()。
A.==NULLB.NULLISC.ASNULLD.ISNULL
51.为了去除结果集中重复的行,可在SELECT语句中使用下列哪个关键字A.ALLB.DISTINCTC.SPOOLD.HAVINGB
52.关于模式的描述下列哪一项不正确()。
C
A.表或索引等模式对象一定属于某一个模式
B.在Oracle数据库中,模式与数据库用户是一一对应的
C.一个表可以属于多个模式D.一个模式可以拥有多个表
1.Oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、______、控制文件。
2.如果定义与组有关的搜索条件,可以把________子句添加到SELECT语中。
3.在SQLPlus命令行下,查看EMP表的结构应使用________命令。
4.自定义异常必须使用________语句引发。
5.如果表中某列的基数比较低,则应该在该列上创建________索引。
6.在用户连接到数据库后,可以查询数据字典____了解用户所具有的系统权限。
7.使下列SQL语句中添加适当的表达式或子句,使语句可以正常运行。
SELECT供应商所在城市,COUNT(供应商编号)
FROM供应商信息GROUPBY________ORDERBY2DESC;
8.假设有一个表TEST,它仅包含一个字段DATA。
现在创建一个触发器,实现将添加的数据变大写。
在下面的空白处填写适当的语句,使之可以正常运行。
Createorreplacetriggertest_trigger
After________on________foreachrow
Begin
:
new.data:
=upper(________);
End;
9.SYS用户以管理员身份登录后,要授予用户Martin可以对用户Scott用户的EMP表进行查询的权限,请写出授权命令________。
(假设Martin用户已存在)
10.查询itemfile表中itemrate列的信息,要求将数值转化为字符串,并使用当前货币符号作为前缀:
Select__TO_CHAR__(itemrate,‘c99999’)fromitemfile;
11.PL/SQL程序块主要包含3个主要部分:
声明部分、可执行部分和_____部分。
12.要执行pack_me包中的order_proc过程(有一个输入参数),假设参数值为’002’,可以输入以下命令:
execute_pack_me.order_proc(‘002’);
________
13.__角色__是具有名称的一组相关权限的组合。
14.在多进程Oracle实例系统中,进程分为用户进程_、后台进程和服务器进程。
1.假设当前用户是SYS用户以管理员身份登录,现需创建用户LiuBei,口令是shuguo,请写出相应的命令_________createuserLisaidentifybyshuguo_____;
2.假设现在用户是SYS用户以管理员身份登录,已知用户账号LiuBei被锁定,需为他解除锁定,请写出相应的命___________alteruserLiuBeiaccountunlock;
3.假设现在用户是SYS用户以管理员身份登录,需授予用户LiuBei对SCOTT用户模式下的EMP表进行查询(SELECT)的权限,grantselectonscott.emptoLiuBei;
___
4.假设现在用户是SYS用户以管理员身份登录,在SQLPlus的SQL>
_提示符下,希望用户LiuBei用shuguo以普通用户身份登录到系统,___connLisa/shuguo;
5.假设现在LiuBei在SQLPlus下,以普通用户身份登录到系统,需查看scott模式下emp表的结构,请写出相应的语句____descscott.emp;
__
四、并发事物题,理解下面过程,完成表中空白
利用回滚段的特性完成银行提款1000元的操作过程,共有两次事务处理操作,
第1次由于误操作将提款金额输入为10000元,然后马上取消操作,第2次成
功完成提款操作,请完成下表。
表-1操作过程
状态
动作
回滚段中数据
动作结束后的帐户余额
内存中的数据
其他用户看到的数据
1
前事务#1
空
1500
2
更新储蓄,设置余额=余额-10000
(1)____
(2)____
3
回滚
(3)____
4
更新储蓄,设置余额=余额-1000
(4)____
500
5
提交
(5)____
-8500150015001500500
五、编程题:
(本题共2小题,共25分)
以下1-3题可能用到的Employee表结构和数据如下图-1:
图-1Employee表结构和数据
1.阅读以下程序,理解其功能,完成空白:
(每个2分,共10分)
以下程序段实现的是从employee表中读取员工姓名(Ename)、部门编号(DeptNO),并使用游标逐行比较,将部门编号为20的员工部门编号和姓名输出.
Declare
(1)_________--定义游标c_emp_cursor
is
selectename,deptnofromemployee;
v_enameemployee.ename%type;
v_deptnoemployee.deptno%type;
begin
(2)_________;
--打开游标
loop--遍历游标
fetchc_emp_cursorintov_ename,v_deptno;
exitwhen(3)_________;
if(4)_________then
dbms_output.put_line(v_deptno||'
'
||v_ename);
--输出数据
endif;
endloop;
(5)_________;
--关闭游标
end;
createorreplacecursorc_emp_cursoropenc_emp_cursor
c_emp_cursor%NOTFOUNDv_deptno=20closec_emp_cursor
2.根据图-1Employee表的结构,完成以下程序的编写:
(10分)
编写一个PL/SQL函数get_sal,接受传入参数部门号(v_emp_no),据此来查询获取某雇员的工资。
请写出程序代码
CREATEORREPLACEFUNCTIONget_sal
(v_emp_noINemployee.empno%TYPE)3分
RETURNNUMBER1分
IS
v_emp_salemployee.sal%TYPE:
=0;
2分
BEGIN
SELECTsal
INTOv_emp_sal
FROMemployee
WHEREempno=v_emp_no;
RETURN(v_emp_sal);
4分
ENDget_sal;
执行结果测试:
3、请创建一个名称为change_record的触发器,实现当对emp表更新员工工资之后,将更新纪录保存到表salary_change_record中。
具体要求如下:
建立日志对薪水的变动情况形成一个追踪,也就是说,如果对某个职员的薪水进行变更就应该将其相应的变更记录全部记下来,将数据记录到表salary_change_record中,salary_change_record结构salary_change_record(empid,old_salary,new_salary,change_date),其中old_salary用来纪录员工原来的工资,new_salary用来纪录更新后的工资,change_date记录更新的系统时间。
请写出程序代码(4分)
Createtablesalary_change_record
(empidchar(4),
Old_salarynumber(7,2),
New_salarynumber(7,2),
Change_datedate))
请写出创建触发器的语句:
(6分)
Createorreplacetriggerchange_record
Afterupdateofsalonemployee
Foreachrow2分
Begin
Insertintosalary_change_record
values(:
new.empno,:
old.sal,:
new.sal,sysdate);
1.emp表结构如下图所示,请按要求完成以下程序的编写。
表-2emp表结构
(1)假设部门号(DeptNo)为10的部门为管理部,请建立一个视图V_Mage,其功能是选取Emp表中部门号为10的员工信息。
(2)假设现需用到一张表update_logs(op_user,op_date,old_value,new_value),其结构如下所示:
请写出创建表update_logs的语句,要求主键为op_user,字段类型与宽度下表。
(6分)update_logs表结构
名称
类型及长度
Empno
Number(4)
Ename
Varchar2(10)
Job
Varchar2(9)
Sal
number(7,2)
Deptno
Number
(2)
Dname
Varchar2(14)
Loc
Varchar2(13)
1.编写一个数据库触发器del_dept,当任何时候某个部门从"
dept"
中删除时,该触发器将从"
emp"
表中删除该部门的所有雇员记录。
写出相应的代码:
[此文档可自行编辑修改,如有侵权请告知删除,感谢您的支持,我们会努力把内容做得更好]