Oracle期末考试试题及答案考 生 信 息 栏装 订 线一、选择题:(本题共20个小题,每小题2分,共40分)1当Oracle 服务器启动时,下列哪种文件不是必须的 ( ) 。
A. 数据文件 B. 控制文件 C. 日志文件 D. 归档日志文件 2.在Oracle 中,一个用户拥有的所有数据库对象统称为 ( )。
A. 数据库 B. 模式 C. 表空间 D. 实例 3.在 Oracle 数据库的逻辑结构中有以下组件: 1. 表空间 2. 数据块 3. 区 4. 段 这些组件从大到小依次是( )。
A. 1→2→3→4B.1→4→3→2C.1→3→2→4D. 4→1→3→2 4.下列哪个子句实现对一个结果集进行分组和汇总( )。
A.HAVING B.ORDER BY C.WHERE D.GROUP BY 5.在Oracle 数据库中,( )用户模式存储数据字典表和视图对象。
A. SYS B. SYSTEM C. SCOTT D. SYSDBA 6.以下不属于命名的PL/SQL 块的是( )。
A .程序包 B .过程 C .游标 D .函数7.在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将( )表空间分配给用户作为默认表空间。
A .HR B .SCOTT C .SYSTEM D .SYS8.在Windows操作系统中,Oracle的( )服务是使用iSQL*Plus必须的。
A.OracleHOME_NAMETNSListener B. OracleServiceSIDC. OracleHOME_NAMEAgentD. OracleHOME_NAMEHTTPServer9.下列哪个语句可以在SQL*Plus 中直接调用一个过程( )。
A. RETURNB. CALLC. SETD. EXEC10.如果服务器进程无法在数据缓冲区中找到空闲块,为添加从数据文件中读出的数据块,则系统会启动如下哪一个进程( )A.CKPTB. DBWRC.LGWRD. SMON11.下列哪一个锁模式不属于Oracle( )。
A.死锁B.排他锁C.行级共享锁D.共享锁12.有字符串数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为( )A. 10 4B. 4 4C. 10 10D. 4 1013.在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句( )。
A. FETCHB. CLOSEC. OPEND. CURSOR14. ORACLE中,用来判断列值是否为空的操作符是( )。
A. ==NULLB. NULLISC. AS NULLD. IS NULL15.查询一个表的总记录数,可以采用( )统计函数。
A. AVG(*)B. SUM(*)C. COUNT(*)D. MAX(*)16.以下的哪个命令可以将SQL 命令的运行结果保存到文件中( )。
A.SAVEB.SPOOLC.GETD.INPUT17.为了去除结果集中重复的行,可在SELECT 语句中使用下列哪个关键字( ) 。
A.ALLB.DISTINCTC.SPOOLD.HAVING18.关于模式的描述下列哪一项不正确( )。
A.表或索引等模式对象一定属于某一个模式B.在Oracle 数据库中,模式与数据库用户是一一对应的C.一个表可以属于多个模式D.一个模式可以拥有多个表19.下列SELECT 语句中,哪些子句可以包含子查询( )。
A.SELECTB.GROUP BYC.WHERED.ORDER BY20.在下列模式对象中,哪个对象不会占用实际的存储空间( )。
A.视图B.表C.索引D.簇二、填空题(共8小题,10空需要填写,每空1分,共10分)1. __________是具有名称的一组相关权限的组合。
2. 一个表空间物理上对应一个或多个__________文件。
3.标准的SQL 语言语句类型可以分为:__________、数据操纵语句(DML)和__________。
4. 如果需要向表中插入一批已经存在的数据,可以在INSERT 语句中使用__________ 语句。
5.通过视图修改数据时,实际上是在修改__________中的数据。
6.如果需要向表中插入一批已经存在的数据,可以在INSERT 语句中使用__________语句。
7.在众多的事务控制语句中,用来撤销事务的操作的语句为________,用于持久化事务对数据库操作的语句是________。
8. 在多进程Oracle 实例系统中,进程分为________、后台进程和服务器进程。
三、程序填空(共10小题,10空需要填写,每空3分,共30分)1. 假设当前用户是SCOTT用户以普通用户登录,口令为tiger,请写出该用户以管理员身份登录的命令________________________________________;2.假设用户SCOTT以管理员身份登录,现需创建用户Lisa,口令是Lisa,请写出相应的命令___________________________________________;3. 假设用户SCOTT以管理员身份登录,已知用户账号Lisa被锁定,需为他解除锁定,请写出相应的命令___________________________________________;4. 假设用户SCOTT以管理员身份登录,需授予用户Lisa对SCOTT用户模式下的EMP表进行查询(SELECT)的权限,请写出相应的命令_______________________________;5. 假设用户SCOTT以管理员身份登录,在SQL Plus的SQL>提示符下,希望用户Lisa用Lisa以普通用户身份登录到系统,请写出相应的命令________________________;6. 假设用户Lisa用Lisa以普通用户身份登录到系统,现需查看本用户下的Class表的结构,请写出相应的命令___________________________________________;7. 假设用户Lisa用Lisa以普通用户身份登录到系统,用命令select * from Class查询Class表中的数据,现需将缓冲区中的SQL 命令保存到C盘根目录下的class.txt文件中, 请写出相应的命令___________________________________________;8. 假设用户Lisa用Lisa以普通用户身份登录到系统,现需查看本用户下有哪些表,请写出相应的命令___________________________________________;9. 假设用户Lisa用Lisa以普通用户身份登录到系统,现需为Class 表的ID 列添加一个名为PK_CLASS_ID 的主键约束,请补充完整相应的命令ALTER TABLE Class________________________;10. 假设用户Lisa用Lisa以普通用户身份登录到系统,现需创建一个UPDATE 语句来修改本用户下ARTISTS 表中的数据,并且把每一行的T_ID 值都改成15,应该使用的SQL 语句是________________________ ;四、编程题:(本题共2小题,每题10分,共20分)1.请按要求完成以下程序的编写。
(5空,每空2分,共10分)以下存储过程借助游标用于实现对员工工资(Sal)的调整,调整方案为:对于员工号(empno)在7000到7200间的员工,若其原工资在1000之下,则加薪20%。
(1)请完成以下程序:CREATE OR REPLACE PROCEDURE Rise_salISv_empno Emp.empno%type;v_sal Emp.sal%type;V_ErrorText Varchar(200);CURSOR cursor_sal //定义游标CURSOR cursor_salIS_______①_______ //BEGIN______②________; //打开游标LOOPFETCH cursor_sal _____③_______;EXIT WHEN cursor_sal%NOTFOUND;//逐行提取数据IF v_sal<1500 THENUPDATE Emp SET sal= sal*0.20+Sal //更新数据END LOOP; 线订装考 生 信 息 栏装 订 线CLOSE cursor_sal; //关闭游标_____④______; //提交事务ExceptionWhen others THENCLOSE cursor_sal; //关闭游标 rollback; //回滚事务 v_Errortext:='游标使用错误';dbms_output.put_line('程序异常终止,出现以下错误:'||v_Errortext);END;(2) 假设用户已登录SQL Plus 系统,处于“SQL>_”命令提示符下,现需执行存储 过程Rise_sal ,请写出命令:_______⑤___________2. 创建一个函数get_sal ,用于实现对表Emp(如下图)给定一个员工号(Empno), 通过函数获取该雇员的工资值 ,请完成以下程序。
(1)请将函数get_sal 补充完整 (3空,每空2分,共6分) CREATE OR REPLACE FUNCTION get_sal (v_emp_no IN emp.empno %TYPE) ______________ IS______________ emp.sal %TYPE:=0; BEGIN SELECT sal INTO v_emp_sal FROM empWHERE empno=______________;RETURN(v_emp_sal);END get_sal;(2)用函数get_sal查询员工7521号的工资,请写出一种查询方式。
(4分)课程名称四、编程题(本大题共2小题,每题10分,共20分)1. (5空,每空2分,共10分)(1)SELECT empno,salFROM employeeWHERE empno BETWEEN 7300 AND 7600;(2) OPEN cursor_sal(3) INTO v_empno,v_sal(4) COMMIT;(5) EXEC Rise_sal;2.(1)请将函数get_sal补充完整(3空,每空2分,共6分)RETURN NUMBERv_emp_salv_emp_no(2) 用函数get_sal查询员工7521号的工资,请写出一种查询方式。