Oracle 笔试试题及答案
一、选择题(每题 1 分)
1. Oracle 发出下列 select 语句:
SQL> select e.empno, e.ename, d.loc
2 from emp e, dept d
3 where e.deptno = d.deptno
4 and substr(e.ename, 1, 1) = ‘S’;
下列哪个语句是 Oracle 数据库中可用的 ANSI 兼容等价语句?
A.select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where
substr(emp.ename, 1, 1) = ‘S’;
B.select empno, ename, loc from emp, dept on emp.deptno = dept.deptno where
substr(emp.ename, 1, 1) = ‘S’;
C.select empno, ename, loc from emp join dept where emp.deptno = dept.deptno and
substr(emp.ename, 1, 1) = ‘S’;
D.select empno, ename, loc from emp left join dept on emp.deptno = dept.deptno and
substr(emp.ename, 1, 1) = ‘S’;
2. 你要对操纵 Oracle 数据库中的数据。下列哪个选项表示 Oracle 中 select 语句的功能,
并且不需要使用子查询?
A.可以用 select 语句改变 Oracle 中的数据
中的数据
C.可以用 select 语句和另一个表的内容生成一个表 D.可以用 select 语句对表截断
B.可以用 select 语句删除 Oracle
3. Oracle 数据库中发出一个查询。下列哪个选项不能查询对用户定义静态表达式执行数学
运算时的查询组件?
B.表子句
A.列子句
C.DUAL 表
D.where 子句
4. 你要操纵 Oracle 数据,下列哪个不是 SQL 命令?
A.select * from dual;
C.update emp set ename = 6543 where ename = ‘SMITHERS’;
D.create table employees(empid varchar2(10) primary key);
B.set define
5. 你要在 Oracle 中定义 SQL 查询。下列哪个数据库对象不能直接从 select 语句中引用?
A.表
C.索引
B.序列
D.视图
6. 你要根据 PRODUCT_NAME 列从 PROFITS 表查询中过滤返回的数据。下列哪个子句包含相
应过滤条件的引用?
B.from
A.select
C.where
D.having
7. 下列代码显示了 PROFITS 表输出的局部:
PRODUCT_NAME
------------
PRODUCT_TYPE
------------
QTR_END_DATE
------------
PROFIT
-------------
TOY
APP
OFFICE
31-MAR-2001
31-MAR-2001
30-JUN-2001
BARNEY DOLL
GAS GRILL
PENCIL
下列查询的 where 子句哪个能正确计算 2001 年 1 月 1 日到 6 月 1 日六个月内销售的所有家
电总利润?
A.where product_name = ‘GAS GRILL’ and qtr_end_date between ’01-JAN-2001’ and
‘01-JUN-2001’;
B.where proeuct_type = ‘APPLIANCE’ and name = ‘GAS GRILL’ and qtr_end_date
6575430.30
1234023.88
34039.99
= ’31-JAN-2001’ or ‘30-JUN-2001’;
C.where proeuct_type = ‘APPLIANCE’ and qtr_end_date between ’01-JAN-2001’ and ’
01-JUN-2001;
D . where proeuct_name = ‘ GAS GRILL ’ and qtr_end_date = ’ 01-JAN-2001 ’ or
‘01-JUN-2001’;
MGR
----
7902
7698
7698
7839
7698
7839
7839
7566
用下列代码所示的内容回答后面八个问题:
EMPNO
------
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934
ENAME
----------
SIMTH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
JOB
---------
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
PRESIDENT
SALESMAN
CLERK
CLERK
ANALYST
CLERK
7698
7788
7698
7566
7782
HIREDATE
---------
17-DEC-80
20-FEB-81
22-FEB-81
02-APR-81
28-SEP-81
01-MAY-81
09-JUN-81
19-APR-82
17-NOV-81
08-SET-81
23-DEC-82
03-DEC-81
03-DEC-81
23-JAN-82
SAL
----
800
1600
1250
2975
1250
2850
2450
3000
5000
1500
1100
950
3000
1300
COMM
----
300
500
1400
0
DEPTNO
------
20
30
30
20
30
30
10
20
10
30
20
30
20
10
8. 以下选项中哪个是下列查询返回的值:select sum(sal) + sum(comm) from emp where
job = ‘ANALYST’ or ename like ‘J%’ ?
A.6000
B.9925
C.9975
D.NULL
9. 以下选项中哪个是下列查询返回的值:select count(mgr) from emp where deptno = 10 ?
A.1
D.NULL
C.3
B.2
10. 以下选项中哪个是下列查询返回的值:select count(*) from emp where mgr = 7700-2 ?
A.5
D.NUL
C.7
B.6
11. 以下选项中哪个是下列 SQL 命令产生的第三个员工:select ename, sal from emp where
job= ‘SALESMAN’ order by empno desc ?
A.ALLEN
B.MARTIN
C.TURNER
D.WARD
12. 以下选项中哪个是下列 SQL 命令产生的第三个员工:ename, sal from emp where job=
‘SALESMAN’ order by 1 desc ?
A.ALLEN
B.MARTIN
C.TURNER
D.WARD
13. 以下选项中哪个是发出下列查询后 Oracle 返回的值:select substr(job, 1, 3) from
emp where ename like upper(‘__ar%’) ?
D.SAL
B.CLE
A.ANA
C.MAN
14. 以 下 选 项 中 哪 个 是 发 出 下 列 查 询 后 Oracle 返 回 的 值 : select
trunc(months_between(min(hiredate), max(hiredate))) from emp ?
A.24
B.25
C.-24
D.-25
15. 以 下 选 项 中 哪 个 是 发 出 下 列 查 询 后 Oracle 返 回 的 值 : select * from emp where
hiredate >
’23-JAN-82’ ?(选择两个答案)
A.ADAMS
B.MILLER
C.SCOTT
D.SMITH
16. TEST 表包含两个列,TESTCOL 定义为数据类型 NUMBER(10),TESTCOL_2 定义为数据类型
VARCHAR2(10)。在 Oracle 中发出下列语句:insert into test(testcol, testcol_2)
values (null, ‘FRANCIS’),然后对表进行下列查询:select nvl(testcol, ‘EMPTY’)
as testcol from test where testcol_2 = ‘FRANCIS’。下列选项哪个是得到的结果?
A.Oracle 返回结果 0
C.Oracle 返回结果 NULL
B.Oracle 返回结果 EMPTY
D.Oracle 返回错误结果
17. 要从 ORDERS 表中取得数据,其中包括三个列 CUSTOMER、ORDER_DATE 与 ORDER_AMT。可
以用下列哪个 where 子句查询 ORDERS 表,取得客户 LESLIE 超过 2700 的订单?
A.where customer = ‘LESLIE’;
B.where customer = ‘LESLIE’ and order_amt < 2700;
C.where customer = ‘LESLIE’ or order_amt > 2700;
D.where customer = ‘LESLIE’ and order_amt > 2700;
18. 用下列输出回答问题(假设这里的信息来自本章使用的 EMP 表):
EMPNO
----------
SMITH-dog-
ALLEN-dog-
WARD-dog-d
JONES-dog-
MARTIN-dog
BLAKE-dog-
CLARK-dog-
SCOTT-dog-
KING-dog-d
TURNER-dog
JAMES-dog-
FORD-dog-d
MILLER-dog
下列哪个 SQL 语句产生这个输出?
A.select trim(trailing ‘-dog’ from ename) as ename from emp;
B.select rpad(ename, 10, ‘-dog’) as ename from emp;
C.select substr(ename,1 , 10) as ename from emp;
D.select lpad(ename, 10, ‘-dog’) as ename from emp;
19. 用下列代码块回答问题:
SQL> select ______(-45) as output from dual;
OUTPUT
------
-45
下列哪个单行函数无法产生这个输出?
A.abs()
B.ceil()
C.floor()
D.round()
20. 对表中的某一行,VARCHAR2 列包含数值 SMITHY,应用程序在右侧填充七个空格。length()
函数处理这个列值时,返回什么值?
A.6
B.13
C.30
D.60
21. SQL *Plus 中发出的下列语句:
SQL> select ceil(-97.342),
2
3
4
5
floor(-97.342),
round(-97.342),
trunc(-97.342)
from dual;
下列哪个函数不返回结果-97?
A.ceil()
B.floor()
C.round()
D.trunc()
22. SQL *Plus 中发出的下列语句:
SQL> select ceil(256.342),
2
3
4
5
floor(256.342),
round(256.342),
trunc(256.342)
from dual;
下列哪个函数不返回结果 256?
A.ceil()
B.floor()
C.round()
D.trunc()
23. 在 Oracle 中发出的下列查询:
SQL> select months_between(‘15-MAR-83’,’15-MAR-97’) form dual;
Oracle 返回什么?
A.14
B.-14
C.168
D.-168
24. 你要在 Oracle 中使用日期信息的格式掩码。下列哪种情形不适合这个格式掩码?
A . to_date()
D.to_number()
C . alter session set nls_date_format
B . to_char()
25. 数据库中有两表 PRODUCT 与 STORAGE_BOX,PRODUCT 表中列出各个产品的惟一 ID 号、产
品名和特定产品所在的箱子。另一个表中列出各个存储箱(用数字标识)可以包含许多
产品,但每个箱子只能在一个地方。下列哪个语句能正确显示这个数据库中所有产品 ID、
名称和箱子地址?
A.select p.prod_id, p.prod_name, b.box_loc from product p, storage_box b where
p.prod_id = b.prod_id and prod_name=’WIDGET’;
B.select p.prod_id, p.prod_name, b.box_loc from product p, storage_box b where
prod_name=’WIDGET’;
C.select p.prod_id, p.prod_name, b.box_loc from product p, storage_box b where
p.stor_box_num = b.stor_box_num and prod_name=’WIDGET’;
D.select prod_id, prod_name, box_loc from product , storage_box where
stor_box_num = stor_box_num and prod_name=’WIDGET’;
26. 开发报表时,要连接三个表的信息,这些表为 EMP、DEPT 与 SALGRADE。只需要公司 10
级以上员工相应的员工、部门地址与工资范围的记录。这个查询需要多少比较运算?
A.2
B.3
C.4
D.5
27. 要连接两个表 PRODUST 与 STOTAGE 的内容,列出所有包含产品的箱子地址。PRODUCT 有
三列 ID、NAME 与 BOX#;STORAGE 有两列 BOX#与 LOC。下列哪个选项无法得到想要的结
果?
A . select product.id, product.name, storage.loc from product, storage where
product.box#=storage.box#;
B . select product.id, product.name, storage.loc from product join storage on
product.box#=storage.box#;
C.select product.id, product.name, storage.loc from product natural join storage
on product.box#=storage.box#;
D.select product.id, product.name, storage.loc from product natural join storage;
28. 你要定义外连接,下列哪个选项正确描述了外连接语句?
A.由于外连接操作允许一个表中有 NULL 值,因此连接这些表时不必指定相等性比较。
B.在表 A 与 B 的外连接语句中,如果不管 B 表有无相应记录,都要显示表 A 的所有行,
则可以使用右外连接。
C.在表 A 与 B 的外连接语句中,如果不管 A 表有无相应记录,都要显示表 B 的所有行,
则可以使用左外连接。
D.尽管外连接操作允许一个表中有 NULL 值,但连接这些表时仍要指定相等性比较。
29. 数据库中有两个表 PRODUCT 与 STORAGE_BOX,表中列出各个产品的惟一 ID 号、产品名和
特定产品所在的箱子。另一个表中列出各个存储箱(用数字标识)可以包含许多产品,
但每个箱子只能在一个地方。下列哪个语句能正确显示这个数据库中所有产品 ID、名称
和箱子地址,不管有没有指定存储箱?
A . select p.prod_id, p.prod_name, b.box_loc from product p left outer join
storage_box b on p.stor_bax_num = b. stor_bax_num where prod_name=’WIDGET’(+);
B . select p.prod_id, p.prod_name, b.box_loc from product p left outer join
storage_box b on p.stor_bax_num = b. stor_bax_num where prod_name=’WIDGET’ ;
C . select p.prod_id, p.prod_name, b.box_loc from product p right outer join
storage_box b where b.stor_bax_num = p. stor_bax_num(+) and prod_name=’WIDGET’
(+);
D . select p.prod_id, p.prod_name, b.box_loc from product p full outer join
storage_box b on p.stor_bax_num = b. stor_bax_num where b.stor_box_num is NULL ;
30. Oracle 中发出下列命令:
SQL> select e.ename,a.street_address,a.city,a.post_code
2
3
4
from emp e,addr a
where e.empno = a.empno(+)
and a.state = ‘TEXAS’;
下列哪个选项显示等价 ANSI/ISO 语句?
A.select e.ename, a.street_address, a.city, a.state, a.post_code from emp e outer
join addr a on e.empno = a.empno where a.state = ‘TEXAS’;
B.select e.ename, a.street_address, a.city, a.state, a.post_code from emp e left
outer join addr a on e.empno = a.empno where a.state = ‘TEXAS’;
C.select e.ename, a.street_address, a.city, a.state, a.post_code from emp e right
outer join addr a on e.empno = a.empno where a.state = ‘TEXAS’;
D.select e.ename, a.street_address, a.city, a.state, a.post_code from emp e right
outer join addr a where e.empno = a.empno(+) and a.state = ‘TEXAS’;
31. 检查 SQL *Plus 的下列输出:
PRODUCT.ID
----------
578-X
PRODUCT.NAME
------------
WIDGET
TENNESSEE
WIDGET
BOX.LOCATION
------------
IDAHO
456-Y
下列哪个选项是产生这个结果的查询类型?
C.右外连接
B.左外连接
A.全外连接
D.等连接
32. PROFITS 表存储公司不同地区、产品类型和季度的利润信息。下列哪个 SQL 语句显示不
同地区、产品类型和季度的利润的交叉表输出?
A.select region, product_type, time, sum(profit) from profits group by region,
prod_type, time;
B.select region, product_type, time from profits group by rollup(region, prod_type,
time);
C.select region, product_type, time, from profits group by cube(region, prod_type,
time);
D.select region, product_type, time,sum(profit) from profits group by cube(region,
prod_type, time);
33. 对数据库运行下列哪个 group by 查询时会从 Oracle 产生错误?
A.select deptno, job, sum(sal) from emp group by job, deptno;
B.select sum(sal), deptno, job from emp group by job, deptno;
C.select deptno, job, sum(sal) from emp;
D.select deptno, sum(sal), job from emp group by job, deptno;
34. 检查下列 SQL 的输出
SQL> select a.deptno,a.job,b.loc,sum(a.sal)
from dmp a,dept b
where a.deptno = b.depton
group by a.deptno,a.job,b.loc
2
3
4
5 order by sum(a.sal);
这个查询按哪个列的顺序返回输出?
A.A.DEPTON
B.A.JOB
C.B.LOC
D.SUM(A.SAL)
35. 要查询的 PROFITS 表存储公司不同地区、产品类型和季度的利润信息。下列哪个 SQL 语
句按不同地区、产品类型和季度求出平均利润大于 100000 美元的利润?
A.select region, prod_type, period, avg(profits) from profits where avg(prodit) >
100000 group by region, prod_type, period;
B.select region, prod_type, period, avg(profits) from profits where avg(prodit) >
100000 order by region, prod_type, period;
C.select region, prod_type, period, avg(profits) from profits group by region,
prod_type, period having avg(prodit) > 100000;
D.select region, prod_type, period, avg(profits) from profits group by region,
prod_type, period having avg(prodit) < 100000;
36. 公司的员工费用应用程序有两表,一个是 EMP,包含所有员工数据,一个是 EXPENSE,
包含公司每个员工提交的费用票据。下列哪个查询取得提交的费用总和超过其工资值的
员工 ID 与姓名?
A.select e.empno, e.ename from emp e where e.sal < (select sum(x.vouch_amt) from
expense x) and x.empno = e.empno;
B.select e.empno, e.ename from emp e where e.sal < (select x.vouch_amt from expense
x where x.empno = e.empno);
C.select e.empno, e.ename from emp e where e.sal < (select sum(x.vouch_amt) from
expense x where x.empno = e.empno);
D.select e.empno, e.ename from emp e where exists (select sum(x.vouch_amt) from
expense x where x.empno = e.empno);
37. 看看下列语句:
SQL> select ename
2
from emp
3
4
5
6
where empno in
( select empno
from expense
where vouch_amt > 10000 );
下列哪个 SQL 语句产生与上面相同的输出,改写成使用运算符?
A.select e.ename from emp e where exists(select x.empno from expense x where
x.vouch_amt>10000) and x.empno = e.empno;
B.select e.ename from emp e where exists(select x.empno from expense x where
x.vouch_amt>10000 and x.empno = e.empno);
C.select e.ename from emp e where x.empno = e.empno and exists(select x.empno from
expense x where x.vouch_amt>10000)
D.select e.ename from emp e, expense x where x.empno = e.empno and x.vouch_amt>10000
and
exists(select x.empno from expense x where)
38. 用下列代码块回答问题:
SQL> select deptno,job,avg(sal)
( select sal
from emp
group by deptno,job
having avg(sal)>
2
3
4
5
6
7
上述语句使用下面哪种子查询?
B.多行子查询
from emp
where ename = ‘MARTIN’ );
A.单行子查询
C.from 子句子查询
D.多列子查询
39. 公司销售数据库有两个表,PROFITS 存储不同地区不同季度的产品销售利润,REGIONS
存储每个部门地区名称、该地区总部地址和该地区副总裁姓名。下列哪个查询取得
SMITHERS、FUJIMORI 与 LIKKARAJU 领导的地区的玩具销售利润?
A.select sum(profit) from profits where region in (select region froms regions where
reg_head in (‘SMITHERS’, ‘FUJMORI’, ‘LAKKARAJU’)) and product =’TOYS’;
B.select sum(profit) from profits where region like (select region froms regions
where reg_head in (‘SMITHERS’, ‘FUJMORI’, ‘LAKKARAJU’) and product =’TOYS’);
C.select sum(profit) from profits where region = (select region froms regions where
reg_head in (‘SMITHERS’, ‘FUJMORI’, ‘LAKKARAJU’)) and product =’TOYS’;
D.select sum(profit) from profits where region is (select region froms regions where
reg_head in (‘SMITHERS’, ‘FUJMORI’, ‘LAKKARAJU’)) and product =’TOYS’;
40. 下列代码块显示的查询包含一个子查询:
SQL> select dname, avg(sal) as dept_avg
2
3
4
5
6
from emp, dept
where emp.deptno = dept.deptno
group by dname having avg(sal) >
( select avg(sal)*1/4
from emp,dept