1、OCA认证-3 及答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:16,分数:32.00)1.DDL和 DML分别表示 1 和 2。(分数:2.00)填空项 1:_2.子查询按使用比较操作符可分为 1 和 2。(分数:2.00)填空项 1:_3.在 SELECT语句的 WHERE子句中可以使用子查询,表示将 1 外部的 WHERE条件。(分数:2.00)填空项 1:_4.在子查询的 SELECT语句中,可以指定 FROM子句、 1 子句、 2 子句和 HAVING子句等,但是有些情况下不能指定 3 子句。(分数:2.00)填空项 1:_5.使用 IN操作符实现指定
2、匹配查询;使用 1 操作符实现任意匹配查询;使用 2 操作符实现全部匹配查询。(分数:2.00)填空项 1:_填空项 1:_6.在关联子查询中可以使用 1 或 2 关键字。(分数:2.00)填空项 1:_7.常用的表的连接类型有 1(内连接)、 2(外连接) 3 和 4(交叉连接)。(分数:2.00)填空项 1:_8.集合运算符 1 实现了集合的并运算;集合运算符 INTERSECT实现了对集合的交运算;而集合运算符 2则实现了集合的减运算。(分数:2.00)填空项 1:_填空项 1:_9.PL/SQL程序块一般包括 DECLARE部分、BEGIN.END 部分和 1 部分。(分数:2.00)
3、填空项 1:_10.PL/SQL程序块中的赋值符号为 1。(分数:2.00)填空项 1:_11.在声明常量时需要使用 1 关键字,并且必须为常量赋值。(分数:2.00)填空项 1:_12.使用游标一般分为声明游标、 1、 2 和关闭游标这几个步骤。(分数:2.00)填空项 1:_填空项 1:_13.如果程序的执行部分出现异常,那么程序将跳转到 1 部分对异常进行处理。(分数:2.00)填空项 1:_14.自定义异常必须使用 1 语句引发。(分数:2.00)填空项 1:_15.异常根据定义方式可分为 1 和 2 两类。(分数:2.00)填空项 1:_16.游标分为 1 和 2 两种。(分数:2.
4、00)填空项 1:_填空项 1:_二、B选择题/B(总题数:18,分数:36.00)17.如果需要将员工表中所有行连接到员工参考表中的所有行,则应创建_类型的连接? A.等值连接 B.笛卡尔积 C.内连接 D.外连接(分数:2.00)A.B.C.D.18.以下哪个运算符可以用于多行运算?_ A.IN B. C.= D.LIKE(分数:2.00)A.B.C.D.19.下面哪些语句在执行时不返回错误信息,而显示检索结果?_ A.SELECT empno,ename FROM scott.emp WHERE depmo=(SELECT dcptno FROM scott.dept WHERE dne
5、me NOT IN(SALES); B.SELECT empno,ename FROM scott.emp WHERE depmo=(SELECT depmo FROM scott.dept WHERE dneme IN(SALES); C.SELECT empno,e.depton,dname FROM scott.emp e,scott.dept d; D.SELECT empno,depton,dname FROM scott.emp,scott.dept;(分数:2.00)A.B.C.D.20.使用关键字进行子查询时,_关键字只注重子查询是否返回行。如果子查询返回一个或多个行,那么将返
6、回真,否则为假。 A.IN B.ANY C.ALL D.EXISTS(分数:2.00)A.B.C.D.21.使用简单连接查询两个表,其中一个表有 5行记录,另一个表有 28行记录。如果未使用 WHERE子句,则返回多少行?_ A.33 B.23 C.28 D.140(分数:2.00)A.B.C.D.22._为具有相同名称的字段进行记录匹配,不必指定任何同等连接条件。 A.等值连接 B.不等连接 C.自然连接 D.交叉连接(分数:2.00)A.B.C.D.23.如果单行子查询返回了空值且使用了等于比较运算符,外部查询会返回什么结果?_ A.不返回任何行 B.返回表中所有行 C.返回空值 D.返回
7、错误(分数:2.00)A.B.C.D.24.如果需要创建包含多行子查询的 SELECT语句,可以使用哪些(个)比较运算符?_ A.IN、ANY 和 ALL B.LIKE C.BETWEEN.AND. D.=、和(分数:2.00)A.B.C.D.25.下列哪些是 Oracle的伪列?_ A.ROWID B.ROE_NUMBER() C.LEVEL D.ROWNUM E.COLUMN(分数:2.00)A.B.C.D.E.26.当表的重复行数据很多时,应该创建的索引类型应该是_。 A.B树 B.reverse C.bitmap D.函数索引(分数:2.00)A.B.C.D.27.在建表时如果希望某列
8、的值在一定的范围内,应建立什么样的约束?_ A.primary key B.unique C.check D.not null(分数:2.00)A.B.C.D.28.利用游标来修改数据时,所用的 FOR和 UPDATE充分利用了事务的哪个特性?_ A.原子性 B.一致性 C.永久性 D.隔离性(分数:2.00)A.B.C.D.29.下面哪些是合法的变量名?_ A._number01 B.number01 C.number-01 D.number(分数:2.00)A.B.C.D.30.使用下哪条语句可以正确地声明一个常量?_ A.name CONSTANT VARCHAR2(8); B.name
9、 VARCHAR2(8):=CANDY; C.name VARCHAR2(8)DEFAULTCANDY D.name CONSTANT VARCHAR2(8):=CANDY;(分数:2.00)A.B.C.D.31.有如下 PL/SQL程序块:SQLDECLARE2 a NUMBER:=10;3 b NUMBER:=0;4 BEGIN5 IF S2 THEN6 b:=1;7 ELSIF a4 THEN8 b:=2;9 ELSE10 b:=3;11 ENDIF;12 DBMS_OUTPUT,PUT_LINE(B);13 END;执行以上 PL/SQL块后的输出结果为_。 A.0 B.1 C.2 D
10、.3(分数:2.00)A.B.C.D.32.有如下的 PL/SQL程序块:SQLDECLAREI B1NARY_INTEGER:=1;BEGINWIIERE i=1LOOPi:=i+1;DBMS_OUTPUT,PUT_LINE(i);END LOOP;END;执行以上 PL/SQL块后的输出结果为_。 A.输出从 1开始,每次递增 1的数 B.输出从 2开始,每次递增 1的数 C.输出 2 D.该循环将陷入死循环(分数:2.00)A.B.C.D.33.使用游标的什么属性可以获得 SELECT语句当前检索到的行数?_。 A.%:FOUND B.%NOTFOUND C.%ISOPEN D.%POW
11、COUNT(分数:2.00)A.B.C.D.34.下列不属于 IF条件语句中的关键字的是_。 A.ELSEIF B.ELSE IF C.OTHERS D.THEN(分数:2.00)A.B.C.D.三、B编程题/B(总题数:4,分数:32.00)35.查找出当前用户模式下,每张表的记录数,以 scott用户为例,结果应如下: DEPT.4 EMP.14 BONUS0 SALGRADE.5(分数:8.00)_36.某 cc表数据如下: c1 c2 1 西 1 安 1 的 2 天 2 气 3 好 转换为 1 西安的 2 天气 3 好 要求:不能改变表结构及数据内容,仅在最后通过 SELECT语句显示
12、出这个查询结果。(分数:8.00)_37.请用一条 SQL语句查询出 scott.emp表中每个部门工资前 3位的数据,显示结果如下: DEPTN0 SAL1 SAL2 SAL3 _ 10 5000 2450 1300 20 3000 2975 1100 30 2850 1600 1500(分数:8.00)_38.表 nba记录了 NBA(teamVARCHAR2(10),y NUMBER(4)夺冠球队的名称及年份: TEAM Y _ _ 活塞 1990 公牛 1991 公牛 1992 公牛 1993 火箭 1994 火箭 1995 公牛 1996 公牛 1997 公牛 1998 马刺 199
13、9 湖人 2000 湖人 2001 湖人 2002 马刺 2003 活塞 2004 马刺 2005 热火 2006 马刺 2007 凯尔特人 2008 湖人 2009 湖人 2010 请写出一条 SQL语句,查询出在此期间连续获得冠军的有哪些队,其连续的年份的起止时间是多少,结果如下: TEAM B E 公牛 1991 1993 火箭 1994 1995 公牛 1996 1998 湖人 2000 2002 湖人 2009 2010(分数:8.00)_OCA认证-3 答案解析(总分:100.00,做题时间:90 分钟)一、B填空题/B(总题数:16,分数:32.00)1.DDL和 DML分别表示
14、 1 和 2。(分数:2.00)填空项 1:_ (正确答案:数据定义语言、数字操作语言)解析:2.子查询按使用比较操作符可分为 1 和 2。(分数:2.00)填空项 1:_ (正确答案:单行操作符、多行操作符)解析:3.在 SELECT语句的 WHERE子句中可以使用子查询,表示将 1 外部的 WHERE条件。(分数:2.00)填空项 1:_ (正确答案:子查询返回的结果)解析:4.在子查询的 SELECT语句中,可以指定 FROM子句、 1 子句、 2 子句和 HAVING子句等,但是有些情况下不能指定 3 子句。(分数:2.00)填空项 1:_ (正确答案:WHERE,GROUP BY,O
15、RDER BY)解析:5.使用 IN操作符实现指定匹配查询;使用 1 操作符实现任意匹配查询;使用 2 操作符实现全部匹配查询。(分数:2.00)填空项 1:_ (正确答案:ANY)填空项 1:_ (正确答案:ALL)解析:6.在关联子查询中可以使用 1 或 2 关键字。(分数:2.00)填空项 1:_ (正确答案:EXISTS,NOT EXISTS)解析:7.常用的表的连接类型有 1(内连接)、 2(外连接) 3 和 4(交叉连接)。(分数:2.00)填空项 1:_ (正确答案:INNER JOIN,OUTER JOIN,CROSS JOIN)解析:8.集合运算符 1 实现了集合的并运算;集
16、合运算符 INTERSECT实现了对集合的交运算;而集合运算符 2则实现了集合的减运算。(分数:2.00)填空项 1:_ (正确答案:UNION)填空项 1:_ (正确答案:MINUS)解析:9.PL/SQL程序块一般包括 DECLARE部分、BEGIN.END 部分和 1 部分。(分数:2.00)填空项 1:_ (正确答案:EXCEPTION)解析:10.PL/SQL程序块中的赋值符号为 1。(分数:2.00)填空项 1:_ (正确答案::=)解析:11.在声明常量时需要使用 1 关键字,并且必须为常量赋值。(分数:2.00)填空项 1:_ (正确答案:CONSTANT)解析:12.使用游标
17、一般分为声明游标、 1、 2 和关闭游标这几个步骤。(分数:2.00)填空项 1:_ (正确答案:打开游标)填空项 1:_ (正确答案:检索游标)解析:13.如果程序的执行部分出现异常,那么程序将跳转到 1 部分对异常进行处理。(分数:2.00)填空项 1:_ (正确答案:EXCEPTION)解析:14.自定义异常必须使用 1 语句引发。(分数:2.00)填空项 1:_ (正确答案:RAISE)解析:15.异常根据定义方式可分为 1 和 2 两类。(分数:2.00)填空项 1:_ (正确答案:系统异常和用户自定义异常)解析:16.游标分为 1 和 2 两种。(分数:2.00)填空项 1:_ (
18、正确答案:显式游标)填空项 1:_ (正确答案:隐式游标)解析:二、B选择题/B(总题数:18,分数:36.00)17.如果需要将员工表中所有行连接到员工参考表中的所有行,则应创建_类型的连接? A.等值连接 B.笛卡尔积 C.内连接 D.外连接(分数:2.00)A. B.C.D.解析:18.以下哪个运算符可以用于多行运算?_ A.IN B. C.= D.LIKE(分数:2.00)A. B.C.D.解析:19.下面哪些语句在执行时不返回错误信息,而显示检索结果?_ A.SELECT empno,ename FROM scott.emp WHERE depmo=(SELECT dcptno FR
19、OM scott.dept WHERE dneme NOT IN(SALES); B.SELECT empno,ename FROM scott.emp WHERE depmo=(SELECT depmo FROM scott.dept WHERE dneme IN(SALES); C.SELECT empno,e.depton,dname FROM scott.emp e,scott.dept d; D.SELECT empno,depton,dname FROM scott.emp,scott.dept;(分数:2.00)A.B. C.D. 解析:20.使用关键字进行子查询时,_关键字只注
20、重子查询是否返回行。如果子查询返回一个或多个行,那么将返回真,否则为假。 A.IN B.ANY C.ALL D.EXISTS(分数:2.00)A.B.C.D. 解析:21.使用简单连接查询两个表,其中一个表有 5行记录,另一个表有 28行记录。如果未使用 WHERE子句,则返回多少行?_ A.33 B.23 C.28 D.140(分数:2.00)A.B.C.D. 解析:22._为具有相同名称的字段进行记录匹配,不必指定任何同等连接条件。 A.等值连接 B.不等连接 C.自然连接 D.交叉连接(分数:2.00)A.B.C. D.解析:23.如果单行子查询返回了空值且使用了等于比较运算符,外部查询
21、会返回什么结果?_ A.不返回任何行 B.返回表中所有行 C.返回空值 D.返回错误(分数:2.00)A. B.C.D.解析:24.如果需要创建包含多行子查询的 SELECT语句,可以使用哪些(个)比较运算符?_ A.IN、ANY 和 ALL B.LIKE C.BETWEEN.AND. D.=、和(分数:2.00)A.B. C.D.解析:25.下列哪些是 Oracle的伪列?_ A.ROWID B.ROE_NUMBER() C.LEVEL D.ROWNUM E.COLUMN(分数:2.00)A. B.C. D. E.解析:26.当表的重复行数据很多时,应该创建的索引类型应该是_。 A.B树 B
22、.reverse C.bitmap D.函数索引(分数:2.00)A.B.C. D.解析:27.在建表时如果希望某列的值在一定的范围内,应建立什么样的约束?_ A.primary key B.unique C.check D.not null(分数:2.00)A.B.C. D.解析:28.利用游标来修改数据时,所用的 FOR和 UPDATE充分利用了事务的哪个特性?_ A.原子性 B.一致性 C.永久性 D.隔离性(分数:2.00)A.B.C.D. 解析:29.下面哪些是合法的变量名?_ A._number01 B.number01 C.number-01 D.number(分数:2.00)A
23、. B. C.D. 解析:30.使用下哪条语句可以正确地声明一个常量?_ A.name CONSTANT VARCHAR2(8); B.name VARCHAR2(8):=CANDY; C.name VARCHAR2(8)DEFAULTCANDY D.name CONSTANT VARCHAR2(8):=CANDY;(分数:2.00)A.B. C.D.解析:31.有如下 PL/SQL程序块:SQLDECLARE2 a NUMBER:=10;3 b NUMBER:=0;4 BEGIN5 IF S2 THEN6 b:=1;7 ELSIF a4 THEN8 b:=2;9 ELSE10 b:=3;11
24、 ENDIF;12 DBMS_OUTPUT,PUT_LINE(B);13 END;执行以上 PL/SQL块后的输出结果为_。 A.0 B.1 C.2 D.3(分数:2.00)A.B.C.D. 解析:32.有如下的 PL/SQL程序块:SQLDECLAREI B1NARY_INTEGER:=1;BEGINWIIERE i=1LOOPi:=i+1;DBMS_OUTPUT,PUT_LINE(i);END LOOP;END;执行以上 PL/SQL块后的输出结果为_。 A.输出从 1开始,每次递增 1的数 B.输出从 2开始,每次递增 1的数 C.输出 2 D.该循环将陷入死循环(分数:2.00)A.B
25、. C.D.解析:33.使用游标的什么属性可以获得 SELECT语句当前检索到的行数?_。 A.%:FOUND B.%NOTFOUND C.%ISOPEN D.%POWCOUNT(分数:2.00)A.B.C.D. 解析:34.下列不属于 IF条件语句中的关键字的是_。 A.ELSEIF B.ELSE IF C.OTHERS D.THEN(分数:2.00)A.B.C.D. 解析:三、B编程题/B(总题数:4,分数:32.00)35.查找出当前用户模式下,每张表的记录数,以 scott用户为例,结果应如下: DEPT.4 EMP.14 BONUS0 SALGRADE.5(分数:8.00)_正确答案
26、:(declare type tab_names is table of varchar2(20) index by binary_integer; tab_name tab_names; coun number; str varchar2(100); begin select table_name bulk collect into tab_name from user_tables; for i in tab_name.firsttab_name.last loop str:=select count(*) from |tab_name(i); execute immediate str
27、into coun; dbms_output.put_line(tab_name(i)|coun); end loop; end;)解析:36.某 cc表数据如下: c1 c2 1 西 1 安 1 的 2 天 2 气 3 好 转换为 1 西安的 2 天气 3 好 要求:不能改变表结构及数据内容,仅在最后通过 SELECT语句显示出这个查询结果。(分数:8.00)_正确答案:(create or replace function x return varchar2 is type t_array is table of number index by binary_integer; type t
28、array is table of varchar2(10) index by binary_integer; ta t_array; tar tarray; re varchar2(10); n number; na varchar2(10); begin select id bulk collect into ta from (select id,name from xx order by id) group by id; for i in ta.Firstta.last loop dbms_output.put(ta(i)|); select name bulk collect into
29、 tar from xx where id=ta(i); for i in tar.firsttar.last loop dbms_output.put(tar(i); end loop; dbms_output.put_line(); end loop; return re; end;)解析:37.请用一条 SQL语句查询出 scott.emp表中每个部门工资前 3位的数据,显示结果如下: DEPTN0 SAL1 SAL2 SAL3 _ 10 5000 2450 1300 20 3000 2975 1100 30 2850 1600 1500(分数:8.00)_正确答案:(select de
30、ptno,max(sal) sal1,max(decode(t,2,sal) sal2,min(sal) sal3 from (select sal,deptno,t from (select empno,ename,sal,row_number() over(partition by deptno order by sal desc) t,deptno from emp) e where e.t=3) group by deptno)解析:38.表 nba记录了 NBA(teamVARCHAR2(10),y NUMBER(4)夺冠球队的名称及年份: TEAM Y _ _ 活塞 1990 公牛
31、 1991 公牛 1992 公牛 1993 火箭 1994 火箭 1995 公牛 1996 公牛 1997 公牛 1998 马刺 1999 湖人 2000 湖人 2001 湖人 2002 马刺 2003 活塞 2004 马刺 2005 热火 2006 马刺 2007 凯尔特人 2008 湖人 2009 湖人 2010 请写出一条 SQL语句,查询出在此期间连续获得冠军的有哪些队,其连续的年份的起止时间是多少,结果如下: TEAM B E 公牛 1991 1993 火箭 1994 1995 公牛 1996 1998 湖人 2000 2002 湖人 2009 2010(分数:8.00)_正确答案:(select max(nn.team) team,min(nn.y) B,max(nn.y)+1 E from (select n2.team,n2.y from (select * from nba) n1 join (select * from nba) n2 on n1.team=n2.team where n1.y=n2.y+1) nn group by (nn.y-rownum) order by B)解析: