数据库管理技术复习题

更新时间:2024-04-10 02:09:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

选择题

1.下列选项中,哪一部分不是Oracle实例的组成部分( ) C A.系统全局区SGA B. PMON后台进程 C.控制文件 D. Mnnn调度进程

2.在全局存储区SGA 中,哪部分内存区域是循环使用的( ) B A.数据缓冲区 B.日志缓冲区 C.共享池 D.大池

3.在 Oracle 中创建用户时,若未提及 DEFAULT TABLESPACE 关键字,则 Oracle将分配给用户作为默认表空间的表空间是( ) A A. SYSTEM

B. SYS

C. USER D.DEFAULT

4. 在Oracle中,一个用户拥有的所有数据库对象统称为( ) A A. 模式

B.表空间

C. 数据库 D. 实例

D

5.下列哪个子句实现对一个结果集进行分组和汇总( )

A.HAVING B.ORDER BY C.WHERE D.GROUP BY

6.如果要设置SQL*Plus 每页打印的数量,则可以使用如下的哪个命令( ) C A.SET PAGE B.PAGESIZE C.SET PAGESIZE D.SIZE 7. 下列哪个语句允许检查UPDATE 语句所影响的行数( ) B A. SQL%FOUND B. SQL%ROWCOUNT C. SQL%COUNTD D. SQL%NOTFOUND

8.下列哪个语句可以在SQL*Plus 中直接调用一个过程( ) D A. RETURN B. CALL C. SET D. EXEC

9. 对于下面的函数,哪个语句将成功地调用( ) A CREATE OR REPLACE FUNCTION Calc_Sum (Addend_X number, Addend_Y number) Return number As Sum number;

BEGIN Sum :=Addend_X+Addend_Y; Return Sum; END; A. Sum:=Calc_Sum(23,12) B. EXECUTE Calc_Sum(45) C.EXECUTE Calc_Sum(23,12) D. Calc_Sum

10.在下列各选项中,关于序列的描述哪一项是不正确的( ) D A.序列是Oracle 提供的用于产生一系列唯一数字的数据库对象 B.序列并不占用实际的存储空间

C.使用序列时,需要用到序列的两个伪列NEXTVAL 与CURRVAL。其中,NEXTVAL 将返回序列生成的下一个值,而CURRVAL 返回序列的当前值

D.在任何时候都可以使用序列的伪列CURRVAL,以返回当前序列值 11 .替代触发器可以被附加到哪一类数据库对象上( ) C A.表 B.序列 C.视图 D.簇

12.下列哪个语句会终止事务( ) B A.SAVEPOINT B. COMMIT

C.END TRANSACTION D. ROLLBACK TO SAVEPOING 13.下列哪一个锁模式不属于Oracle( ) A A.死锁 B.排他锁 C.行级共享锁 D.共享锁

14.用户查询下列哪一个数据字典视图,可以查看他向其他用户授予的对象权限( ) C A.DBA_SYS_PRIVS B.USER_TAB_PRIVS_MADE C.USER_TAB_PRIVS D.USER_OBJ_PRIVS

15.若想导出(export)Scott用户的所有对象,该使用哪一种数据库导出(export)模式( ) B A. table B. user C.tablespace D.full database 16.在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句() A A. FETCH B. CLOSE

C. OPEN

D. CURSOR

17. 在Windows操作系统中,Oracle的( )服务是使用iSQL*Plus必须的。B A.OracleHOME_NAMETNSListener B. OracleServiceSID

C. OracleHOME_NAMEAgent D. OracleHOME_NAMEHTTPServer 18 . 使用哪一条SHUTDOWN语句关闭数据库时,下次打开数据库需要做恢复的操作( ) C A.SHUTDOWN TRANSACTIONAL B.SHUTDOWN IMMEDIATE C. SHUTDOWN ABORT D. SHUTDOWN NORMAL 19. ORACLE中,用来判断列值是否为空的操作符是( ) D A ==NULL B NULLIS C .AS NULL D. IS NULL 20.根据以下在不同会话与时间点的操作,判断结果是多少( ) A session1 session2 -------------------------------------- ----------------------------------------

T1 select count(*) from t; --显示结果(1000)条

T2 delete from t where rownum <=100;

T3 begin

delete from t where rownum <=100;

commit; end; T4 truncate table t;

T5 select count(*) from t; --这里显示的结果是多少? A.800 B. 900 C.1000 D. 0

21. 在Oracle中,一个用户拥有的所有数据库对象统称为( ) A A. 模式

B.表空间

C. 数据库 D. 实例

22. 在Oracle数据库的逻辑结构中有以下组件:A 表空间 B 数据块 C 区 D 段,这些组件从大到小依次是( ) B A. A→B→C→D

B. A→D→C→B C. A→C→B→D D. D→A→C→B

23. 在Oracle数据库中,( ) 用户模式存储数据字典表和视图对象。 B A. SYSTEM B. SYS C. SCOTT D. SYSDBA

24.下列哪个语句可以在SQL*Plus 中直接调用一个过程( ) D A. RETURN B. CALL C. SET D. EXEC

26. 在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会引起序列值增加的是( ) C A. select seq.ROWNUM from dual; B.select seq.ROWID from dual; C. select seq.CURRVAL from dual; D.select seq.NEXTVAL from dual; 28. Oracle提供的(),能够在不同硬件平台上的Oracle数据库之间传递数据。 D A. 归档日志运行模式 B. RECOVER命令 C. 恢复管理器(RMAN) D. Export和Import工具

29.在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句( ) A A. FETCH B. CLOSE

C. OPEN

D. CURSOR

30.下列哪个子句实现对一个结果集进行分组和汇总( ) D A.HAVING B.ORDER BY C.WHERE D.GROUP BY

31. 对于下面的函数,哪个语句将成功地调用( ) A CREATE OR REPLACE FUNCTION Calc_Sum (Addend_X number, Addend_Y number) Return number As

Sum number;

BEGIN Sum :=Addend_X+Addend_Y; Return Sum; END;

A. Sum:=Calc_Sum(23,12) B. EXECUTE Calc_Sum(45) C.EXECUTE Calc_Sum (23, 12) D. Calc_Sum

33. 有字符串数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为( ) C A. 10 10 B. 4 4 C. 10 4 D. 4 10 34 使用哪一条SHUTDOWN语句关闭数据库时,下次打开数据库需要做恢复的操作( ) C A.SHUTDOWN TRANSACTIONAL B.SHUTDOWN IMMEDIATE C. SHUTDOWN ABORT D. SHUTDOWN NORMAL 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.CKPT

B.SMON

C.LGWR

D.DBWR

38. 在Oracle中,阅读下列PL/SQL块: DECLARE

v_lower NUMBER:= 2; v_upper NUMBER:= 100; v_count NUMBER:= 1;

FOR I IN v_lower..v_lower LOOP

INSERT INTO test(results)

REGIN

VALUES(v_count); V_count:= v_count+1;

END LOOP;

END; 请问FOR LOOP循环体执行了( )次。 A. 1 B. 2 C. 98 D. 0 E)100

39.查看下面的语句创建了哪一种索引( )? C CREATE INDEX test_index ON student(stuno, sname) TABLESPACE users STORAGE(INITIAL 64k,next 32k);

A.全局分区索引 B.位图索引 C.复合索引 D.基于函数的索引

40下列哪一个动作不会激发一个触发器( )? B A.更新数据 B.查询数据 C.删除数据 D.插入数据

42. 下列哪个对象属于模式对象?( ) C A. 数据段 B.盘区 C.表 D.表空间

43.在Oracle中创建用户时,若未提及DEFAULT TABLESPACE关键字,则Oracle就将( )表空间分配给用户作为默认表空间。 C A.HR B.SCOTT C.SYSTEM D.SYS

44. 获得当前系统时间的查询语句是( )。 A A. Sysdate B. Select Sysdate C. Select Sysdate from dual D. 以上都可以 45.下列哪一个锁模式不属于Oracle( )。 A A.死锁 B.排他锁 C.行级共享锁 D.共享锁

46. PL/SQL过程和函数的参数模式不包括( )。 D A. in B. out C. in out D. out in

47. EMP表有14条记录,则语句SELECT ‘Aptech’ FROM EMP 的执行结果是( )。 D A. Aptech B. 无输出 C. 14行Aptech D. 编译出错

49.在Oracle中,当控制一个显式游标时,下面哪种命令包含INTO子句。 A A. FETCH B. CLOSE

C. OPEN

D. CURSOR

50. ORACLE中,用来判断列值是否为空的操作符是( )。 D A. ==NULL B. NULLIS C. AS NULL D. IS NULL

51.为了去除结果集中重复的行,可在SELECT 语句中使用下列哪个关键字 A.ALL B.DISTINCT C.SPOOL D.HAVING B

52.关于模式的描述下列哪一项不正确( )。 C A.表或索引等模式对象一定属于某一个模式

B.在Oracle 数据库中,模式与数据库用户是一一对应的 C.一个表可以属于多个模式 D.一个模式可以拥有多个表

1. Oracle 数据库系统的物理存储结构主要由3 类文件组成,分别为数据文件、

______、控制文件。

2. 如果定义与组有关的搜索条件,可以把________子句添加到SELECT 语中。 3. 在SQL Plus命令行下,查看EMP表的结构应使用________命令。 4. 自定义异常必须使用________语句引发。

5. 如果表中某列的基数比较低,则应该在该列上创建________索引。 6. 在用户连接到数据库后,可以查询数据字典____了解用户所具有的系统权限。 7.使下列SQL 语句中添加适当的表达式或子句,使语句可以正常运行。 SELECT 供应商所在城市,COUNT(供应商编号)

FROM 供应商信息GROUP BY ________ ORDER BY 2 DESC;

8.假设有一个表TEST,它仅包含一个字段DATA。现在创建一个触发器,实现将添加的数据变大写。在下面的空白处填写适当的语句,使之可以正常运行。

Create or replace trigger test_trigger

After________ on ________ for each row Begin

:new.data:=upper(________); End;

9. SYS用户以管理员身份登录后,要授予用户Martin可以对用户Scott用户的EMP表进行查询的权限,请写出授权命令________。(假设Martin用户已存在) 10. 查询itemfile表中itemrate列的信息,要求将数值转化为字符串,并使用当前货币符号作为前缀:Select__ TO_CHAR__ (itemrate, ‘ c99999’) from itemfile; 11. PL/SQL 程序块主要包含3 个主要部分:声明部分、可执行部分和_____部分。 12. 要执行pack_me包中的order_proc过程(有一个输入参数),假设参数值为’002’,可以输入以下命令: execute_ pack_me.order_proc(‘002’);________ 13. __角色__ 是具有名称的一组相关权限的组合。

14. 在多进程Oracle 实例系统中,进程分为 用户进程_、后台进程和服务器进程。

1.假设当前用户是SYS用户以管理员身份登录,现需创建用户LiuBei,口令是shuguo,请写出相应的命令_________ create user Lisa identify by shuguo_____; 2.假设现在用户是SYS用户以管理员身份登录,已知用户账号LiuBei被锁定,需为他解除锁定,请写出相应的命___________ alter user LiuBei account unlock;________ 3.假设现在用户是SYS用户以管理员身份登录,需授予用户LiuBei对SCOTT用户模式下的EMP表进行查询(SELECT)的权限, grant select on scott.emp to LiuBei;___ 4.假设现在用户是SYS用户以管理员身份登录,在SQL Plus的SQL>_提示符下,希望用户LiuBei用shuguo以普通用户身份登录到系统, ___ conn Lisa/ shuguo; 5.假设现在LiuBei在SQL Plus下,以普通用户身份登录到系统,需查看scott模式下emp表的结构,请写出相应的语句____ desc scott.emp;__ 四、并发事物题,理解下面过程,完成表中空白

利用回滚段的特性完成银行提款1000元的操作过程,共有两次事务处理操作, 第1次由于误操作将提款金额输入为10000元,然后马上取消操作,第2次成 功完成提款操作,请完成下表。

表-1 操作过程

状态 1 2 回滚段中动 作 数据 前事务#1 更新储蓄,设置余额=余额-10000 3 4 5 回滚 更新储蓄,设置余额=余额-1000 提交 空 1500 空 (4)____ 空 动作结束后的帐户余额 内存中的数据 其他用户看到的数据 1500 (1)____ (3)____ 500 500 1500 (2)____ 1500 1500 (5)____ -8500 1500 1500 1500 500

五、 编程题:(本题共2小题,共25分)

以下1-3题可能用到的Employee表结构和数据如下图-1:

图-1 Employee表结构和数据

1 .阅读以下程序,理解其功能,完成空白:(每个2分,共10分)

以下程序段实现的是从employee表中读取员工姓名(Ename)、部门编号(DeptNO),并使用游标逐行比较,将部门编号为20的员工部门编号和姓名输出.

Declare (1) _________ --定义游标c_emp_cursor is

select ename,deptno from employee; v_ename employee.ename%type;

v_deptno employee.deptno%type;

begin

(2) _________ ; --打开游标 loop --遍历游标

fetch c_emp_cursor into v_ename, v_deptno; exit when (3) _________ ; if (4) _________ then

dbms_output.put_line(v_deptno||' '|| v_ename); --输出数据

end if; end loop;

(5) _________; --关闭游标 end;

create or replace cursor c_emp_cursor open c_emp_cursor c_emp_cursor%NOTFOUND v_deptno=20 close c_emp_cursor

2.根据图-1 Employee表的结构,完成以下程序的编写:(10分)

编写一个PL/SQL函数get_sal,接受传入参数部门号(v_emp_no),据此来查询获取某雇员的工资。

①请写出程序代码

CREATE OR REPLACE FUNCTION get_sal

(v_emp_no IN employee.empno%TYPE) 3分 RETURN NUMBER 1 分 IS

v_emp_sal employee.sal%TYPE:=0; 2分 BEGIN

SELECT sal

INTO v_emp_sal

FROM employee WHERE empno=v_emp_no; RETURN(v_emp_sal); 4分 END get_sal;

②执行结果测试:

3、请创建一个名称为 change_record的触发器,实现当对emp表更新员工工资之后,将更新纪录保存到表salary_change_record中。(10分)

具体要求如下:

建立日志对薪水的变动情况形成一个追踪,也就是说,如果对某个职员的薪水进行变更就应该将其相应的变更记录全部记下来,将数据记录到表salary_change_record中,salary_change_record结构salary_change_record ( empid,old_salary,new_salary,change_date ),其中old_salary用来纪录员工原来的工资,new_salary用来纪录更新后的工资,change_date记录更新的系统时间。

①请写出程序代码(4分) Create table salary_change_record (empid char(4), Old_salary number(7,2), New_salary number(7,2), Change_date date) )

②请写出创建触发器的语句:(6分) Create or replace trigger change_record After update of sal on employee

For each row 2分 Begin

Insert into salary_change_record

values (:new.empno,:old.sal,:new.sal,sysdate); end; 4分

1.emp表结构如下图所示,请按要求完成以下程序的编写。

表-2 emp表结构

(1) 假设部门号(DeptNo)为10的部门为管理部,请建立一个视图V_Mage,其

功能是选取Emp表中部门号为10的员工信息。(6分)

(2) 假设现需用到一张表update_logs(op_user,op_date,old_value,new_value),其结构如下所示:请写出创建表update_logs的语句,要求主键为op_user,字段类型与宽度下表。(6分) update_logs表结构

1. 编写一个数据库触发器del_dept,当任何时候某个部门从\中删除时,

该触发器将从\表中删除该部门的所有雇员记录。 写出相应的代码:

名称 类型及长度 Deptno Dname Loc Number(2) Varchar2(14) Varchar2(13) 名称 Empno Ename Job Sal Deptno 类型及长度 Number(4) Varchar2(10) Varchar2(9) number(7,2) Number(2)

本文来源:https://www.bwwdw.com/article/l36r.html

Top