oracle试题答案解释版

更新时间:2024-01-31 08:12:01 阅读量: 教育文库 文档下载

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

要求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;

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

Top