收藏 分销(赏)

Oracle数据库应用-复习题及答案.docx

上传人:仙人****88 文档编号:6231663 上传时间:2024-12-02 格式:DOCX 页数:25 大小:38.97KB
下载 相关 举报
Oracle数据库应用-复习题及答案.docx_第1页
第1页 / 共25页
Oracle数据库应用-复习题及答案.docx_第2页
第2页 / 共25页
点击查看更多>>
资源描述
Oracle数据库应用 复习题 (参考答案见P15) 一、选择题 1、以下( )内存区不属于SGA。 A. PGA B. 日志缓冲区 C. 数据缓冲区 D. 共享池 2、一个数据库由若干个( )组成。 A. 段 B. 表空间 C. 块 D. 区 3、在Oracle 中创建用户时,若未使用DEFAULT TABLESPACE 关键字,则Oracle就将( )表空间分配给用户作为默认表空间,将( )表空间分配给用户作为临时表空间。 A. TEMP B. USERS C. SYSTEM D. EXAMPLE 4、监听并接受来自客户端应用程序连接请求的服务是( )。 A. OracleCSService B. OracleDBConsoleSID C. OracleJobScheduler D. OracleOraDb10g_home1TNSListener 5、( )是一个小二进制文件,它维护着数据库的全局物理结构,用以支持数据库成功地启动和运行。 A. 数据文件 B. 控制文件 C. 日志文件 D. 参数文件 6、( )进程把修改过的数据块从内存写回到数据库的数据文件中。 A. DBWR B. LGWR C. CKPT D. SMON 7、( )的任务是将已经写满的联机日志文件复制到归档日志文件中。这仅在数据库运行在归档模式下时才发生。 A.恢复进程 B. 进程监视进程 C. 作业队列 D. 归档进程 8、( )数据库应用架构又称为“瘦客户机”模式。 A. 多磁盘结构 B. 两层模式 C. 三层模式 D. 磁盘映像 9、数据字典表保存表、索引、视图以及所有其他数据结构的信息。它们属于( )用户。 A. SYS B. SYSTEM C. SCOTT D. SYSMAN 10、如果用户要安装、查看和卸载Oracle 数据库系统,就需要使用( )。 A. 通用安装器 B. 数据库配置助手 C. 企业管理器 D. 网络配置助手 11、如果用户需要在安装好Oracle的系统上创建、修改和删除数据库,就需要使用( )。 A. 通用安装器 B. 数据库配置助手 C. 企业管理器 D. 网络配置助手 12、要删除一个大表里的所有记录,并释放占用的表空间,可以使用( )命令。 A. DELETE FROM 表名; B. DELETE 表名; C. TRUNCATE TABLE 表名; D. TRUNCATE 表名; 13、在游标的属性中,( )指出是否发现一条记录。 A. %ISOPEN B. %FOUND C. %NOTFOUND D. %ROWCOUNT 14、要以自身的方案创建私有同义词,用户必须拥有( )系统权限。 A. CREATE PRIVATE SYNONY B. CREATE SYNONYM C. CREATE PUBLIC SYNONYM D. CREATE ANY SYNONYM 15、可以利用( )伪列来访问序列。 A. NEXTVAL和PREVAL B. CURRVAL和NEXTVAL C. CACHE和NOCACHE D. MAXVALUE和MINVALUE 16、( )语句在执行语句前先计算选择器的值。 A. IF-THEN B. IF-THEN-ELSE C. FOR D.CASE 17、以零作除数时会引发( )异常。 A. VALUE-ERROR B. ZERO-DIVIDE C. STORAGE_ERROR D. NO_DATA_FOUND 18、显式游标在PL/SQL程序的( )部分声明。 A. BEGIN B. LOOP C. DECLARE D.START 19、要更新游标结果集中的当前行,应使用( )子句。 A. WHERE CURRENT OF B. FOR UPDATE C. FOR DELETE D. FOR MODIFY 20、以下不属于命名PL/SQL块的是( )。 A. 函数 B. 过程 C. 触发器 D. 游标 21、子程序的( )模式参数可以在调用子程序时指定一个常量。 A. IN B.OUT C. IN OUT D.INOUT 22、数据字典( )包含存储过程的代码文本。 A. USER_OBJECTS B. USER_TEXT C. DBA_PROCEDURE D. USER_SOURCE 23、在PL/SQL块中,下列( )变量名合法。 A. 3dffswa B. A Variable C. Rose$$_1 D.Ta%a 24、游标的属性中,( )的意义是指出是否打开了游标。 A. %FOUND B. %ISOPEN C. %NOTFOUND D. %ROWCOUNT 25、( )对查询结果没有任何影响,但能提高获取查询结果的速度。 A. 表 B. 索引 C. 视图 D. 序列 26、( )是一个表示表的数据的数据库对象,它允许用户从一个或一组表中通过一定的查询语句建立一个“虚表”。 A. 表 B. 索引 C. 视图 D. 序列 27、( )是一种可被多个用户使用的用于产生一系列惟一数字的数据库对象。 A. 表 B. 索引 C. 视图 D. 序列 28、下列表达1979年10月8日的日期表示中,( )是合法的日期格式。 A. 8-10-79 B. 8-10月-79 C. 10月-8-79 D. 79-10月-8 29、下列数据库模式对象中,具有EXECUTE对象权限的是( )。 A. 表 B. 视图 C. 过程 D. 序列 30、下列数据库模式对象中,不具有SELECT对象权限的是( )。 A. 表 B. 视图 C. 过程 D. 序列 二、填空题 1、一个 为一个数据库用户所拥有,并且名称与用户名相同,是一个数据库的逻辑结构的集合。 2、 视图包含了当前用户方案下的存储过程定义文本。 3、数据库的结构分为 和 。 4、Oracle 的进程分为 、 和 3种。 5、Oracle权限分为 、 。 6、给用户授予和回收权限的命令的关键字分别是 和 。 7、PL/SQL是 和 的结合。 8、PL/SQL中的块主要有两种类型: 和 。 9、 是Oracle数据库中数据的逻辑组织,它存储段的集合,在操作系统级映射到一个或多个 上去。 10、一个 就是一个数据库对象的别名,当应用 时,Oracle服务器会自动用 来代替 。 11、每个Oracle 10g数据库创建后都会有4个默认的数据库用户: 、 、 和 。 12、要使新建的用户能连接到数据库,必须先授予其 角色。 13、在创建和修改用户时,设置口令的子句应以 开头。 14、一个Oracle数据库可以包含 数据文件。 15、基于视图进行数据查询时, 限制;但基于视图进行数据更新时,只能对基于 的视图进行数据更新。 16、变量赋值有两种方式:用 赋值运算符为单个变量赋值;通过 或 语句给 个变量同时赋值。 17、Oracle中主要的复合类型有: 、 和 。 18、使用 使一个变量的类型定义参考另一个已经定义的变量的类型,或参考表中某个字段的数据类型。 19、使用 使一个变量的类型参考另一个表或视图的结构,变量内的分量名字、数据类型与表或视图结构中的字段名字、数据类型完全一致。 20、在PL/SQL中循环结构有3种类型,即 循环、 循环和 循环。 21、在 循环中可以用 表示递减循环。 22、要对查询结果集中的多行数据进行逐行处理,应该使用 技术。 23、在声明游标的SELECT语句中不能使用 子句。 24、在显式游标的使用过程中, 返回从游标中取出的记录总行数。 25、使用游标FOR循环时,不能使用 语句、 语句和 语句。 26、使用游标FOR循环时,游标FOR循环中用到的记录变量 需要事先声明,该记录变量是由系统隐式定义的与游标数据行一致的记录型变量。 27、异常分为: 和 两种。 28、存储过程的参数模式有: 、 和 3种。 29、修改存储过程或函数的语法格式与定义存储过程或函数的语法格式的不同之处是 。 30、一个触发器由 、 、 、 和 5部分组成。 三、问答题 1、使用什么工具创建和删除数据库? 2、使用什么工具配置和修改监听程序和数据库的网络服务名? 3、Oracle 数据库设计的步骤是什么? 4、表空间与数据库、数据文件之间的关系是怎样? 5、若要备份/恢复某个表空间,需要将表空间设置为什么状态?在ALTER TABLESPACE命令中用什么子句来设置? 6、如何删除表空间及表空间中包含的数据库对象? 7、什么是角色?简述角色和用户之间的关系。 8、简述通过角色管理用户的权限具体步骤。 9、概要文件的作用是什么? 10、比较表和视图两者间的异同。 11、使用同义词有哪些好处? 12、一个PL/SQL块有哪几部分组成?哪些是必须的?哪写是可选的? 13、简述游标使用的步骤。 14、处理用户自定义异常的步骤有哪些? 15、比较存储过程和函数的异同。 16、比较存储过程和触发器的异同。 17、那个系统表存储了本方案存储过程、函数和触发器的信息? 18、简述游标的作用。 19、如果在调用存储过程时需要从存储过程返回值,应该使用 参数。 20、创建表时,如果存在外键关系,则创建表的先后顺序有什么规定? 四、根据要求写命令 1、 将user12方案下的staff表中性别(ssex)为男的记录复制成新表staff_bk1。 2、将user12方案下的staff表中性别(ssex)为女的记录添加到表staff_bk1中。 3、创建表空间tabs11,包含一个数据文件ygbxfile1.dbf,路径为“D:\oracle\product\10.1.0\oradata\ygbx”,大小为10MB,如果数据文件已经存在,则被覆盖。数据文件具有自动扩展属性,每次增量为128KB,最大值为100MB。 4、创建用户ygbx_user1,口令为“user1”,默认表空间为“tabs11”,临时表空间为“temp”,创建后解锁该用户。 5、创建一个角色ygbx_role1,并通过该角色将user12.staff表的增删改查权限授予所有用户。 6、为user12.staff表创建一个公用同义词staff_synonym。 7、定义一个记录变量c1,用于存放staff表中的一条记录。 8、根据ygbx数据库中的business表和staff表建立一个视图view1,通过view1可以查询每个员工的sno, sname, ssex, sbirthday,及员工所在企业编号(bno)和企业名称(bname)。 五、请写出以下PL/SQL程序块或子程序的功能或输出结果。 1、写出以下PL/SQL程序块的输出结果: SET SERVEROUTPUT ON DECLARE n1 NUMBER(5); n2 NUMBER(5); BEGIN n1:=10; n2:=10; DECLARE n1 NUMBER(5); BEGIN n1:=20; n2:=n1; DBMS_OUTPUT.PUT_LINE('子块:n1='||n1||',n2='||n2); END; DBMS_OUTPUT.PUT_LINE('主块:n1='||n1||',n2='||n2); END; 2、写出以下程序块的功能: SET SERVEROUTPUT ON DECLARE r1 scott.dept%ROWTYPE; BEGIN SELECT * INTO r1 FROM scott.dept WHERE deptno='10'; DBMS_OUTPUT.PUT_LINE(r1.deptno||','||r1.dname||','||r1.loc); END; 3、写出以下程序块的功能: SET SERVEROUTPUT ON DECLARE score float:=&score; BEGIN IF score<0 OR score>100 THEN DBMS_OUTPUT.PUT_LINE('成绩不合理'); ELSIF score>=60 then DBMS_OUTPUT.PUT_LINE('合格'); ELSE DBMS_OUTPUT.PUT_LINE('不合格'); END IF; END; 4、写出以下程序块的功能: SET SERVEROUTPUT ON DECLARE j NUMBER:=1; i NUMBER:=1; BEGIN LOOP j:=j* i; i:= i+1; EXIT WHEN i>10; END LOOP; DBMS_OUTPUT.PUT_LINE(j); END; 5、写出以下程序块的输出结果: SET SERVEROUTPUT ON DECLARE s NUMBER:=0; BEGIN FOR i IN REVERSE 1..5 LOOP s:=s+i; DBMS_OUTPUT.PUT_LINE('i='||i) END LOOP; DBMS_OUTPUT.PUT_LINE('1--5的和为:'||s); END; 6、写出以下程序块的功能: SET SERVEROUTPUT ON DECLARE n NUMBER; CURSOR staff3_cursor IS SELECT * FROM staff WHERE ssex='男'; --声明游标 c1 staff3_cursor%rowtype;--定义参考游标结构的记录变量 BEGIN select count(*) into n from staff where ssex='男'; OPEN staff3_cursor; --打开游标 FOR i in 1..n LOOP FETCH staff3_cursor into c1; --提取游标数据行 DBMS_OUTPUT.PUT_LINE(c1.sno||', ' ||c1.sname||','||c1.sbirthday); END LOOP; CLOSE staff3_cursor; --关闭游标 END; 7、写出下列存储过程的功能: CREATE PROCEDURE staff2_pro (c1 IN CHAR,v1_staff OUT staff%ROWTYPE) AS BEGIN SELECT * INTO v1_staff FROM staff WHERE sno=c1; END; 8、写出下列触发器的功能: CREATE TRIGGER staff_trig AFTER INSERT OR UPDATE OR DELETE ON staff FOR EACH ROW BEGIN IF INSERTING THEN DBMS_OUTPUT.PUT_LINE('正在向staff表插入数据!'); ELSIF UPDATING THEN DBMS_OUTPUT.PUT_LINE('正在staff中更新数据!'); ELSIF DELETING THEN DBMS_OUTPUT.PUT_LINE('正在staff删除数据!'); END IF; END; 六、编写程序 1、利用标准CASE语句根据grade变量的值ABCDE分别输出“优秀”、“良好”、“中等”、“及格”、“不及格”。 2、使用while循环,编程计算并输出n! 。n从键盘输入。 3、将第五题中第6小题改写成带参数游标并使用while循环来实现。 4、将第五题中第6小题改写成不带参数的游标FOR循环来实现。 5、编写存储过程swap交换两个参数,并写出调用程序。 6、利用存储函数staff_func重做第五题第7小题。 参 考 答 案 一、选择题 1. A 2. B 3. BA 4. D 5. B 6. A 7. D 8. C 9. A 10. A 11. B 12. C 13. B 14. B 15. B 16. D 17. B 18. C 19. A 20. D 21. A 22. D 23. C 24. B 25. B 26. C 27. D 28. B 29. C 30. C 二、填空题 1. 方案/模式 2. USER_SOURCE 3. 物理结构;逻辑结构; 4. 用户进程;服务器进程;后台进程; 5. 系统权限;对象权限; 6. GRANT; REVOKE; 7. 过程语言PL;结构化查询语言SQL 8. 无名块;命名的子程序; 9. 表空间;数据文件; 10. 同义词;同义词;同义词所代表的对象;同义词 11. SYS; SYSTEM; SYSMAN; DBSNMP; 12. CONNECT 13. IDENTIFIED BY 14. 一个或多个 15. 没有;行列子集; 16. :=; SELECT INTO 或 FETCH INTO;多 17. 记录类型;数组类型;表类型 18. %TYPE 19. %ROWTYPE 20. LOOP; WHILE; FOR 21. FOR; REVERSE 22. 游标 23. INTO 24. %ROWCOUNT 25. OPEN; FETCH; CLOSE 26. 不 27. 系统预定义异常;用户自定义异常 28. IN; OUT; IN OUT 29. 有没有OR REPLACE子句 30. 触发依据;触发事件;触发时间;触发器类型;触发器主体 三、问答题 1. 数据库配置助手 2. 网络配置助手 3. 需求分析;创建系统数据库;系统的安全性管理;创建数据库对象;创建存储过程、函数和触发器等高级对象;编写前台应用程序脚本,并完善DBMS. 4. 关系:一个数据库由多个表空间组成,一个表空间包含一个或多个数据文件。 5. 脱机;OFFLINE 6. 使用DROP TABLESPACE <表空间名> INCLUDING CONTENTS AND DATAFILES; 命令。 7. 角色是一组权限的集合。关系:当把角色授予多个用户时,这些用户就具有相同的权限。当角色的权限改变时,所有这些用户的权限也随之改变。 8. 通过角色管理用户的步骤分为3步:创建角色;给角色分配权限;将角色分配给用户。 9. 概要文件的作用:限制用户对资源的访问,并进行口令管理。 10. 不同点:表用于真正存放数据。而视图并不存放数据,是虚表。相同点:表和视图都能用于数据查询及更新。 11. 同义词的好处: n 数据库所有者想屏蔽要操作的对象名称。 n 由于对象名过长不便于记忆和书写,这时可为对象起一个简短的别名。 n 屏蔽远程服务器中对象的位置信息。 12. 一个PL/SQL块由3个部分组成:声明部分,执行部分和异常处理部分。其中执行部分是必须的,而声明部分和异常处理部分是可选的。 13. 使用游标的步骤:声明游标,打开游标,从游标中取数据行进行处理,关闭游标。 14. 处理用户自定义异常的步骤:定义异常,触发异常,异常处理。 15. 相同点:存储过程和存储函数都能完成特定的操作。 不同点:存储函数主要目的是为了返回一个值,存储过程可以使用OUT参数返回一个或多个值,也可以不返回值;存储过程使用语句格式进行调用,而存储函数只能在表达式中进行调用。 16. 相同点:存储过程和触发器都能完成特定的操作。 不同点:存储过程在程序中被显式调用;而触发器不能被显式调用。 17. USER_SOURCE 18. 使用游标技术可以方便地对查询结果集中的多行数据进行逐行处理。 19. OUT 20. 先创建无外键关联的父表,再创建子表。 四、根据要求写命令 1. CREATE TABLE staff_bk1 AS SELECT * FROM user12.staff where ssex=’男’; 2. INSERT INTO staff_bk1 SELECT * FROM user12.staff where ssex=’女’; 3. CREATE TABLESPACE tabs11 DATAFILE ‘D:\oracle\product\10.1.0\oradata\ygbx\ygbxfile1.dbf’ SIZE 10M REUSE AUTOEXTEND ON NEXT 128K MAXSIZE 100M; 4. CREATE USER ygbx_user1 IDENTIFIED BY user1 DEFAULT TABLESPACE tabs11 TEMPORARY TABLESPACE temp ACCOUNT UNLOCK 5. 分为以下3个步骤: n CREATE ROLE ygbx_role1; n GRANT SELECT,INSERT,UPDATE,DELETE ON user12.staff TO ygbx_role1; n GRANT ygbx_role1 TO PUBLIC; 6. CREATE PUBLIC SYNONYM staff_synonym FOR user12.staff; 7. c1 staff%ROWTYPE; 8. CREATE VIEW view1 AS SELECT sno, sname, ssex, sbirthday,bno,bname FROM business,staff WHERE business.bno=staff.bno; 五、请写出以下PL/SQL程序块或子程序的功能或输出结果。 1、执行结果: 子块:n1=20,n2=20 主块:n1=10,n2=20 2、使用记录变量查询显示部门号为“10”的部门信息。 3、根据从键盘输入的百分制成绩,判断是否合格。 4、计算并显示10!。 5、输出结果: i=5 i=4 i=3 i=2 i=1 1—5的和为:15 6、通过游标逐行显示staff表中性别为“男”的记录的sno,sname,sbirthday3个字段信息。 7、通过IN 和OUT参数,查询并返回指定编号的员工记录。 8、创建行级触发器“staff_trig”,用于对表“staff”进行DML操作之后,显示相应的操作信息。 六、编写程序 1、SET SERVEROUTPUT ON DECLARE grade CHAR(1):='B'; BEGIN CASE grade WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('优秀'); WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('良好'); WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('中等'); WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('及格'); WHEN 'E' THEN DBMS_OUTPUT.PUT_LINE('不及格'); ELSE DBMS_OUTPUT.PUT_LINE('不存在'); END CASE; END; 2、SET SERVEROUTPUT ON DECLARE Jch NUMBER:=1; i NUMBER:=1; n int:=&n; BEGIN WHILE i<=n LOOP jch:=jch* i; i:= i+1; END LOOP; DBMS_OUTPUT.PUT_LINE('n的阶乘为:'||jch); END; 3、SET SERVEROUTPUT ON DECLARE n NUMBER; CURSOR staff3_cursor(sex CHAR) IS SELECT * FROM staff WHERE ssex=sex; --声明游标 c1 staff3_cursor%rowtype;--定义参考游标结构的记录变量 BEGIN OPEN staff3_cursor(‘男’); --打开游标 FETCH staff3_cursor into c1; --提取游标数据行 WHILE staff3_cursor%FOUND LOOP DBMS_OUTPUT.PUT_LINE(c1.sno||', ' ||c1.sname||','||c1.sbirthday); FETCH staff3_cursor into c1; END LOOP; CLOSE staff3_cursor; --关闭游标 END; 4、SET SERVEROUTPUT ON DECLARE n NUMBER; CURSOR staff3_cursor IS SELECT * FROM staff WHERE ssex='男'; --声明游标 BEGIN FOR c1 in staff3_cursor LOOP DBMS_OUTPUT.PUT_LINE(c1.sno||', ' ||c1.sname||','||c1.sbirthday); END LOOP; END; 5、创建存储过程: CREATE OR REPLACE PROCEDURE swap(p1 IN OUT NUMBER, p2 IN OUT NUMBER) IS v_temp NUMBER; BEGIN v_temp := p1; p1 := p2; p2 := v_temp; END; 调用存储过程: SET SERVEROUT ON DECLARE num1 NUMBER :=&num1; num2 NUMBER :=&num2; BEGIN swap(num1, num2); DBMS_OUTPUT.PUT_LINE('num1 = ' || num1); DBMS_OUTPUT.PUT_LINE('num2 = ' || num2); END; 6、CREATE FUNCTION staff1_fun (c1 IN CHAR) RETURN staff%ROWTYPE AS v1_staff staff%ROWTYPE; BEGIN SELECT * INTO v1_staff FROM staff WHERE sno=c1; RETURN v1_staff; END; 25
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服