Oracle试题答案解释版

361778935 贡献于2013-02-22

作者 guoling  创建于2011-09-14 06:39:00   修改者郭玲  修改于2011-10-19 04:55:00字数7473

文档摘要:要求20道判断、20道单选选择10道多选7道问答3道编程,再加20道填空一、单项选择题(每题1分,共20分)1、在Oracle中,一个用户拥有的所有数据库对象统称为(B)A)数据库B)模式C)表空间D)实例2、在Oracle中创建用户时,若未提及DEFAULT TABLESPACE关键字,则Oracle就将(D)表空间分配给用户作为默认表空间。
关键词:

要求20道判断、20道单选选择 10道多选 7道问答 3道编程,再加20道填空 一、单项选择题(每题1分,共20分) 1、在Oracle中,一个用户拥有的所有数据库对象统称为( B ) A) 数据库 B) 模式 C) 表空间 D) 实例 2、在 Oracle 中创建用户时,若未提及 DEFAULT TABLESPACE 关键字,则 Oracle 就将( D )表空间分配给用户作为默认表空间。 A) USER B) SYS C) DEFAULT D) SYSTEM 3、在oracle中获取前10条的关键字是(D) A)     top      B)Limit        C)first             D) rownum 解释:top 是sql server数据库的关键字,limit 是mysql数据库的关键字,first是informix数据库的关键字 4、在Oracle中,( B )操作符返回并集操作并不包括重复行 A) Intersect B) Union C) Union all D) Minus 解释: Intersect返回交集,union返回并集,不包括重复行,union all 返回并集,包括重复行,minus返回差集 5、下面那个语句是错误的(D) A)     create synonym dept_synon for scott.dept B)     create sequence dept_seque increment by 1 C)     alter sequence dept_seque increment by 2 D)     drop dept_synon 6、oracle数据库中,通过( C )可以以最快的方式访问表中的一行。 A) 主键 B) 唯一索引 C) rowid D) 全表扫描 7、下面那个不是oracle程序设计中的循环语句( A) A)    for… end for   B) loop…end loop    C) while…end loop   D) for… end loop 8、oracle存储结构正确的是( B ) A) tablespace--segment--osblock--block B) tablespace--segment--extent--block C) tablespace--extent--segment--block D) tablespace--extent--block –segment 9、若tnsnames.ora文件中部分配置如下: xfhtdb = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hello)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = scce) ) ) 则表明:( C ) A) Oracle服务器所在的主机名为DEDICATED B) Oracle服务器所在的主机名为scce C) 对应数据库的SID为scce D) 对应数据库的SID为xfhtdb 10、现在要启动数据库,那么下面哪一个启动语句是错误的( A ) A) STRATUP NORMAL B) STRATUP FORCE C) STRATUP NOMOUNT D) STARTUP MOUNT 11、授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是:( C ) A) GRANT CHANGE ON SCOTT.EMP TO SA B) GRANT UPDATE ON SCOTT.EMP(SAL) TO SA C) GRANT UPDATE(SAL) ON SCOTT.EMP TO SA D)GRANT MODIFY ON SCOTT.EMP TO SA 12、一个表有百万以上数据,其中一个列经常被作为查询条件并且只有25个不同数据,适 合使用( C )索引提高查询速度。 A) B-Tree B) 反向 C) 位图 D) 函数索引 13、在Oracle中,用下列语句定义了一个过程: CREATE PROCEDURE proc(value1 IN VARCHAR2, value2 OUT NUMBER, value3 IN OUT VARCHAR2) IS BEGIN … END; 假定使用的变量都已经定义,下面对过程proc的调用语法正确的是( B )。 A) proc('tt', 10, v3 ) B) proc ('tt', v2, v3 ) C) proc ( v1, v2, ‘dd’ ) D) proc ('tt', 10,'dd') 14、建立一张表插入1行记录,之后使用exp导出数据,再次给表插入2行数据,之后把表格删除,重新使用imp命令导入导出的数据,导入后表中有( B )条记录。 A) 0 B) 1 C) 2 D) 3 15.、以下哪个不是数据库的物理组件(A)。 A) 表空间 B) 数据文件 C) 日志文件 D) 控制文件 16、以下PL/SQL语句块执行的结果是( D ) set serveroutput on; declare var1 number:= 10; begin loop exit when var1 > 12; var1:= var1 +1; DBMS_OUTPUT.PUT_LINE('a'); end loop; end; A) 无输出 B) a C) a a D) a a a 17、在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?(C ) A) primary key B) unique C) check D) not null 18、利用游标来修改数据时,所用的。。FOR UPDATE充分利用了事务的哪个特性?( D) A) 原子性 B) 一致性 C) 永久性 D) 隔离性 19、在SQLPLUS中,执行外部脚本所用的命令是( B )。 A) / B) @脚本 C) EXE 脚本 D) 不能在SQLPLUS中直接运行脚本 20、Select语句中用来连接字符串的符号是( C ) A) “+” B) “&” C) “||” D) “|” 二、多项选择题(每题1分,共10分) 1、请选择以下那几项是oracle客户端的链接工具:(ABC) A) IE浏览器 B) SQL*PLUS C) PLSQL Developer D) 以上答案均不对 解释:以上均为客户端的连接工具,其中在IE浏览器中键入http://数据库服务器名:5560/isqlplus;sql*plus在oracle的安装目录下可以找到;pl/sql developer 这个软件是第三方公司(developer 公司)开发的一个客户端连接软件。使用非常方便,是oracle客户端的首选工具。 2、数据字典是有以下那项组成:(ABCD) A) 表和视图 B) 用户 C) 存储过程和函数 D) 权限 解释:数据字典包括一、各种对象的定义信息,包括表、视图、索引、同义词、序列、存储过程、函数、包、触发器以及其他各种对象。二、数据库存储空间的分配信息。三、数据库安全信息,包括用户、权限角色等。 3、对于Oracle的服务,描述正确的是( AC ) A)OracleOraDb11g_homeTNSListener服务:Oracle服务器的监听程序 B)OracleDBConsoleSID:Oracle的核心服务,要启动Oracle实例,必须启动该服务 C)OracleJobSchedulerSID:任务调度服务,负责对用户创建的作业按预先设置的时间周期性地进行调度执行,从而实现Oracle服务器的自动管理功能 D)OracleServiceSID:负责在Windows平台下启动Oracle企业管理器。Oracle 11g企业管理器是一个功能完善的Oracle数据库管理工具,可以管理本地数据库环境和网格环境 4、ORACLE常用的约束条件类型(ABDE ) A)PRIMARY B)FOREIGN C)NULL D)UNIQUE E)CHECK 解释:ORACLE常用的约束条件类型:PRIMARY,FOREIGN,NOT NULL,UNIQUE,CHECK 5、以下情况索引无效(ACD) A)使用<>比较时,索引无效,建议使用< or > B)使用后置模糊匹配%时无效 C)使用函数 D)使用不匹的数据类型 6、在下面有关子查询ANY运算符的描述中,哪一项是正确的?( BC ) A)any表示大于最小值 D)都不对 解释:any表示任意的数 7、Oracle内存结构可以分为( BC ) A)备份区。 B)程序全局区。 C)系统全局区。 D)还原区。 E)调度区。 8、下列说法正确的有:( AD ) A) 在Oracle中运行“select rtrim('abcdef','bc') from dual; ”的结果是:abcdef B) 在Oracle中运行“ select replace('a&a&b','&','-') from dual;”的结果是:a-a-b C) 在Oracle中运行“ select instr('abcdef','e') from dual;”的结果是:4 D) 在Oracle中运行“select nvl2(null,2,3) from dual;”的结果是:3 解释:a&a&b,&是变量符号,是特殊符号,不能被替换 9、关于分区表,以下说法正确的是(ABD) A) 对每一个分区,可以建立本地索引 B) 可以用exp工具只导出单个分区的数据 C) 分区表的索引最好建为全局索引,以便于维护 D) 可以通过alter table命令,把一个现有分区分成多个分区 10、以下关于归档日志的说法正确的是(ABC ) A)ORACLE要将填满的在线日志文件组归档时,则要建立归档日志 B)在操作系统或磁盘故障中可保证全部提交的事务可被恢复 C)数据库可运行在两种不同方式下:非归档模式和归档模式 D)数据库在ARCHIVELOG方式下使用时,不能进行在线日志的归档 E)当填满的组成为活动时,在日志开关的检查点就不会完成 三、判断题(每题1分,共20分) 1、数据备份可以全库备份,也可以对单个表进行备份。(Y) 2、普通视图占有数据库存储空间。 ( N ) 3、同义词的作用是实现复杂的功能。( N ) 4、导出和导入实用程序用于实施数据库的逻辑备份和恢复。(Y) 5、行级触发器:无论受影响的行数是多少,都只执行一次。 (N) 解释:语句触发器都只会针对指定语句激活一次。 行级触发器,受影响的每一行都各执行一次。 6、truncate是DDL操作,不能 rollback。(Y) 7、表的外键是另一个表的主键,可以有重复,可以是空值(Y) 8、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可以访问多行。(N) 解释:隐式游标和显式游标区别 隐式游标 显式游标 PL/SQL维护,当执行查询时自动打开和关闭 在程序中显式定义、打开、关闭,游标有一个名字。 游标属性前缀是SQL 游标属性的前缀是游标名 属性%ISOPEN总是为FALSE %ISOPEN根据游标的状态确定值 SELECT语句带有INTO子串,只有一行数据被处理 可以处理多行数据,在程序中设置循环,取出每一行数据。 9、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。(Y)。 10、SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。(N) 11、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。(N) 解释:WHERE 后面的条件不可以有聚集函数 12、oracle dba角色具有所有的权限。(N) 13、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接 。(Y) 14、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。( Y ) 15、pl sql代码块声明区可有可无。( Y ) 16、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。(N) 解释:user_*(当前用户所拥有对象的有关信息), all_*(当前用户可访问对象的信息), dba_*(数据库中所有对象的信息)。 17、因为存储过程不返回值,使用时只能单独调用;而函数却能出现在能放置表达式的任何位置。( Y ) 18、上海西北京 可以通过like ‘%上海_’查出来。(N) 19、锁用于提供数据的完整性和一致性。( Y ) 20、oracle数据库的热备份,数据库必须处于归档模式下。(Y) 四、填空题(每题1分,共20分) 1、Oracle数据库安装后默认的用户有(sys)、(system)等。 2、Oracle的数据备份命令是( exp ),数据恢复命令是(imp )。 3、修改表空间时,使用命令格式的关键字是 (alter) ,更新表记录的关键字是 (update)。 4、客户端连接服务器需要修改(tnsnames.ora),(listener.ora)文件。 5、数据库系统的其结构一般分为三级:用户级、(概念级)、(物理级) 。 6、创建一个简单的用户testUser, 密码为test的语句是(create user testUser identified by test)。 7、提交一个事务使用关键字(commit) 。 8、获得两个集合的交集使用(intersect) 。 9、创建用户时,需要赋予新用户(connect)权限才能使它联上数据库。 10、在oracle体系结构中,包括三类进程,包括用户进程,(服务器进程),(后台进程)。 11、当进行模糊查询是,应使用关键字(like) 和通配符(下划线_)或百分号“%”。 12、使用显示游标主要有四个步骤,声明游标,(打开游标),(读取数据),关闭游标。 五、简答题(每题2分,共12分) 1、删除一张表重复记录(id 是自增唯一,重复记录:其他字段都是一样),有重复的记录只保留一条 Table aa id name age 1 louis 20 2 louis 20 3 jimmy 30 4 louis 20 ------------------------------------------------------------------ 答:delete from aa where id not in(select min(id) from aa group by name,age); 2、解释FUNCTION,PROCEDURE和PACKAGE差别。 答:function和procedure是PL/SQL代码的集合,通常为了实现一个任务。procedure不须要返回任何值,而function将返回一个值。Package是为了实现一个商业功用的一组function和procedure的集合。 3、Oracle中,需要在查询语句中把空值(NULL)输出为0,如何处理? 答:方法一:NVL(column_name,0) 方法二:DECODE(column_name,null,0, column_name) 4、在oracle环境下,需要创建表空间,当数据超过表空间大小时,要对表空间进行扩充,请说出三种扩展方式。 答:添加数据文件 改变数据文件的大小 允许数据文件自动扩展 5、用命令行的方式,创建一个新的ORACLE用户,用户名为AAA,口令为BBB,默认表空间为USERS,临时表空间为 TEMP。 答: CREATE USER AAA IDENTIFIED BY BBB DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; 6、如果一个表在2010-08-04 10:30:00 被drop,在有完善的归档和备份的情况下,如何恢复? 答: 手工拷贝回所有备份的数据文件 startup mount; sql alter database recover automatic until time '2010-08-04:10:30:00'; alter database open resetlogs; 六、编程题(每题4分,共8分) 1、请用一个 sql 语得出结果从 table1,table2 中取出如 table3 所列格式数据 (4分) table1 月份 mon 部门 dep 业绩 yj ------------------------------- 一月份 01 10 一月份 02 10 一月份 03 5 二月份 02 8 二月份 04 9 三月份 03 8 table2 部门 dep 部门名称 dname -------------------------------- 01 国内业务一部 02 国内业务二部 03 国内业务三部 04 国际业务部 05 其他部门 table3 (result) 部门 dep 部门名称 一月份 二月份 三月份 -------------------------------------- 01 国内业务一部 10 0 0 02 国内业务二部 10 8 0 03 国内业务三部 0 5 8 04 国际业务部 0 0 9 05 其他部门 select a.dep,a.dname sum(case when b.mon='一月份' then b.yj else 0 end) as '一月份', sum(case when b.mon='二月份' then b.yj else 0 end) as '二月份', sum(case when b.mon='三月份' then b.yj else 0 end) as '三月份', from table2 a left join table1 b on a.dep=b.dep 2、 一个订单表order1,有这些字段(orderid int ,ordername varchar2(10),qty number,ordernum number,status varchar2(10)) 写一段pl/sql,使用游标,查询订单表,如果qty(预购数量)等于ordernum(实际订购量),则将status设置为’已处理’,否则设置为’未处理’ (4分) declare cursor order_cur is select * from order1 for update of status; my_order_qty order1%rowtype; begin open order_cur; Loop fetch order_cur into my_order_qty; exit when order_cur%notfound; if my_order_qty.ordernum!=my_order_qty.qty then update order1 set status='未处理' where current of order_cur ; else update order1 set status='已处理' where current of order_cur; end if ; end loop; close order_cur; end; --循环游标 declare cursor c_rec is select * from order1 for update; begin open c_rec; for e in c_rec loop if e.qty=e.ordernum then update order1 set status='已处理' where current of c_rec; else update order1 set status='未处理' where current of c_rec; end if; end loop; close c_rec; end;

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 2 人已下载

下载文档