> IT面试 >

Oracle 面试题库—SQL

1. ORACLE用来判断列值是否为空的操作符是____

A ==NULL

B IS NULL

C AS NULL

D NULLIS

2 分析以下的 SQL命令

SELECT i.id_number, m.id_number

FROM inventory i, manufacturer m

WHERE i.manufacturer_id = m.id_number

ORDER BY inventory.description;

如何修改上述命令使其成功执行()

A ORDER BY description

B ORDER BY i.description

C WHERE inventory.manufacturer_id = m.id_number

ORDER BY inventory.description

D ORDER BY inventory.description;

3. 在客户定单表(CUSTOMER)中有一列为单价(PRICE),写一个SELECT命令显示所有单价在500以上的查询语句。

A SELECT * FROM CUSTOMER WHERE PRICE>500;

B SELECT * FROM CUSTOMER WHERE PRICE BETWEEN 500 AND *;

C SELECT * FROM CUSTOMER WHERE PRICE  LIKE ‘%500%’;

D SELECT * FROM CUSTOMER WHERE PRICE>=500;

4. 分析以下SQL 命令:

SELECT price

FROM inventory

WHERE price BETWEEN 1 AND 50

AND (price IN(55, 30, 95);

命令执行后的输出结果是:( )

A 55

B 30

C 95

D NULL

5. 分析以下的SQL 命令:

SELECT manufacturer_id

FROM inventory

WHERE manufacturer_id LIKE ‘%N%P%O%’ ESCAPE ”;

命令执行的返回结果是()

A 所有包含’NPO’的纪录

B 所有包含’NPO’的纪录

C 所有包含’N%P%O’的纪录

D 所有包含’%NPO%’的纪录

6. 分析以下的SQL命令:

SELECT i.id_number, m.manufacturer_name

FROM inventory i, manufacturer m

WHERE i.manufacturer_id(+) = m.id_number;

WHERE 子句中的(+)是什么含义?

A 将inventory表中不满足条件的记录也查出来

B 将i.manufacturer_id+ m.id_number

C将manufacturer表中不满足条件的记录也查出来

D 不能这样写,语法错误

7. 写一SQL语句实现以下功能,把inventory表中的ORDER_DATE 值 ’23-MAY-00′ 显示成 ’01-JAN-00′

A  SELECT ROUND(order_date, ‘YEAR’) FROM inventory;

B  SELECT TO_DATE(order_date, ‘DD-MM-YY’) FROM inventory;

C  SELECT TO_CHAR(order_date, ‘DD-MM-YY’) FROM inventory;

D  都不对

8.下面的SQL命令显示的结果是什么类型:

TO_DATE(’01-JAN-1998′) – TO_DATE(’01-DEC-1996′)

A 数值

B 字符串

C 日期

D 出现错误

9. 简述ROUND 和TRUNC 操作的区别?

A  ROUND在截掉数据时有四舍五入的判断,TRUNC直接按要求截掉没有进位。

B 都是将数据按指定的长度截断

C TRUNC是四舍五入,ROUND是截断

D 都会四舍五入

10. 简述SUBSTR和LENGTH的主要功能。

答案:SUBSTR:用来在一个字符串中求子串

LENGTH:用于求字符串的长度。

11. 分析以下的SQL命令:

SELECT CONCAT(UPPER(SUBSTR(location, 1, 3)), dept_number) “Department Location”

FROM department;

哪个function 最后执行?

a.UPPER

答案:concat

12. 分析以下的SQL命令:

SELECT *

FROM product

WHERE LOWER(description) = ‘CABLE’;

命令能否执行?是否有结果返回?为什么?

答案:命令可以执行,没有结果返回,因为查询条件中的LOWER把查询列值改为小写,而等号右侧为大写,所以不会有结果返回。

13. 在PLAN表中有一列为SPECIES_ID ,该列与SPECIES 表的ID列对应,但后者包含空值,要想在显示结果中包含SPECIES 表的ID列为空值的行的信息,用那种连接条件可以实现?

答案:外连接

14. 分析以下的 SQL 命令:

SELECT i.id_number, m.manufacturer_id

FROM inventory i, inventory m

WHERE i.manufacturer_id = m.region_id_number;

该命令中使用的连接条件是()连接

答案:自连接

15 .外连接的符号可以放在连接条件的哪边,可以两边同时使用吗?

答案:放在包含空值的一边,不可以两边同时使用

16. 如果用等值连接来查询5张表内的信息,至少需要几个连接条件?

答案:至少需要4个连接条件。

17. 分析以下的 SQL 命令:

SELECT i.id_number, m.id_number

FROM inventory i, manufacturer m

WHERE i.manufacturer_id = m.id_number

ORDER BY 1;

该命令执行结果的排序是按那一列的值排序的?

答案:按inventory 表的id_number列排序

18. 如果在where子句中有两个条件要同时满足,应该用以下哪个逻辑符来连接

A.OR

B.NOT

C.AND

D.NONE

答案 c

19. 外连接的条件可以放在以下的那一个子句中

A.FROM

B.WEHRE

C.SELECT

D.HAVING

E.GROUP BY

F.ORDER BY

答案 B

20. 在从两个表中查询数据时,连接条件要放在哪个子句中

A.FROM

B.WHERE

C.SELECT

D.HAVING

E.GROUP BY

答案 B

21 用以下哪个子句来限制分组统计结果信息的显示

A.FROM

B.WEHRE

C.SELECT

D.HAVING

E.GROUP BY

F.ORDER BY

答案 D

22. 数据库中的 TEACHER 表的结果如下:

ID NUMBER(7) PK

SALARY NUMBER(7,2)

SUBJECT_ID NUMBER(7)

至少有两行以上的SUBJECT_ID值是不同的

分析以下的 SQL命令:

1. SELECT ROUND(SUM(salary),-4)

FROM teacher;

2. SELECT subject_id, ROUND(SUM(salary),-2)

FROM teacher

GROUP BY subject_id;

两个命令的显示结果相同吗?哪个命令显示的结果会多些?

答案:不同,命令2会返回更多的结果

23. 如果想对分组统计的结果信息进行筛选,用where 条件子句能实现吗?如果不行该用什么子句实现?

答案:用where子句不能实现,应该用having 子句

24. 以下需求中哪个需要用分组函数来实现?

A.把ORDER表中的定单时间显示成 ‘DD MON YYYY’ 格式

B.把字符串 ‘JANUARY 28, 2000’ 转换成日期格式

C.显示PRODUCT 表中的COST 列值总量

D.把PRODUCT表中的DESCRIPTION列用小写形式显示

答案 C

25. 用以下的SQL语句查询数据库:

SELECT id_number “Part Number”, SUM(price * quantity) TOTAL, description

FROM inventory

WHERE price > 5.00

ORDER BY “Part Number”, 3;

哪一句会产生错误?

A.FROM INVENTORY

B.WHERE PRICE > 5.00

C.ORDER BY “PART NUMBER”, 3;

D.SELECT id_number “Part Number”, SUM(price * quantity) TOTAL, description

答案 D

26.  EMPLOYEE 表包含以下的列:

EMP_ID NUMBER(9)

NAME VARCHAR2(25)

BONUS NUMBER(5,2)

DEPT_ID NUMBER(9)

如果想计算所有具有bonus的职员的bonus平均值,不考虑该列包含空值的那些雇员,用什么功能函数可以实现?

答案:使用AVG函数可以实现。

27. 写出包含 SELECT,FROM ,HAVING ,WHERE,GROUP BY ,ORDER BY子句的书写顺序

答案:SELECT FROM WHERE GROUP HAVING ORDER BY

28. 分析以下的SQL命令

SELECT id_number “Part Number”, SUM(price) “Price”

FROM inventory

WHERE price > 5.00

GROUP BY “Part Number”

ORDER BY 2;

哪一个子句会产生错误?如何修改

答案:第四句GROUP BY “Part Number”会产生错误,应改为GROUP BY id_number

29. 在单行子查询中,子查询的返回结果为多少,返回2行可以吗?

答案:只能返回一行,否则会出错。

30. 以下操作符中哪个可以用做单行简单查询的操作符

A.=

B.IN

C.LIKE

D.BETWEEN

答案 A

31. 分析以下的 SQL 命令:

SELECT id_number

FROM inventory

WHERE manufacturer_id IN

(SELECT manufacturer_id

FROM inventory

WHERE price < 1.00

OR price > 6.00);

该子查询的能否执行,是否有语法错误?

答案:没有语法错误,可以执行为

32. 分析以下SQL命令:

SELECT employee_id, name

FROM employee

WHERE employee_id NOT IN (SELECT employee_id

FROM employee

WHERE department_id = 30

AND job = ‘CLERK’);

如果子查询返回空值,结果会是什么样?

答案 没有结果返回。

33. 如果用户用UPDATE 命令修改了表中的数据值,是否可以恢复回来?

答案:如果事务没有提交可以用ROLLBACK 恢复回来。

34.用户对某表中的数据做修改操作,还没有提交,此时机器断电,修改结果是否能保存在数据库中?

答案:不能,因为非正常结束的事务会被ORACLE 回滚掉

35. 以下那些命令可以暗含提交操作?

A.GRANT

B.UPDATE

C.SELECT

D.ROLLBACK

答案 A

36. 那种类型的约束可以自动创建索引?

答案:UNIQUE ,PRIMART KEY

37 哪中类型的约束只能定义在列级

A. CHECK

B.UNIQUE

C.NOT NULL

D.PRIMART KEY

E.FOREIGN KEY

答案 C

38. 可以在以下哪个对象上创建视图? (选择两个)

A.VIEW

B.QUERY

C.TABLE

D.COMMAND

E.TRANSAction

答案 A,C

39. 分析以下SQL 命令:

CREATE FORCE VIEW parts_vu (company, contact)

AS SELECT manufacturer_name, contact_name

FROM inventory

WITH READ ONLY;

在 PARTS_VU 视图上可以执行UPDATE操作吗?为什么?可以进行什么操作?

答案: 不能执行UPDATE操作,因为该视图是只读的,只能进行select (检索)操作

40. 表PERSONNEL 的结构如下:

ID NUMBER(9)

LAST_NAME VARCHAR2(25)

FIRST_NAME VARCHAR2(25)

MANAGER_ID NUMBER(9)

这里, 部门的管理者也看作是雇员..

分析以下两个命令:

SELECT p.last_name, p.first_name, m.last_name, m.first_name

FROM personnel p, personnel m

WHERE m.id = p.manager_id;

SELECT p.last_name, p.first_name, m.last_name, m.first_name

FROM personnel p, personnel m

WHERE m.manager_id = p.id;

两个的执行结果一样吗?

答案 一样,但格式不同

41. 如果一个表中的数据包含许多空值,是否适合建索引?

答案 适合

42. 分析以下命令

CREATE PUBLIC SYNONYM parts

FOR marilyn.inventory;

它的作用是什么?

为用户marilyn的inventory 对象(不一定是表)建一个同义词或叫别名

43.分析以下的SQL命令

CREATE SEQUENCE line_item_id

START WITH 10001

MAXVALUE 999999999

NOCYCLE;

请问这个序列NOCYCLE关键字的含义是什么?

答案:当序列的值增长到最大值的时候,会从1001开始从新使用

44. DEPARTMENT 表的结构如下:

DEPT_ID NUMBER(9)

DEPT_NAME VARCHAR2(20)

REGION_ID NUMBER(9)

REGION_ID 列有一个外键约束,参照REGION 表,用下面的SQL语句修改DEPARTMENT table 表

UPDATE department

SET dept_id = 6546,

region_id = 9705

WHERE dept_id = 8940;

产生以下的错误信息:

ORA-02291: integrity constraint (SYS_C23) violated – parent key not found

错误可能会在那一行?

答案:可能在region_id = 9705这一行。

45.表 TEACHER 的结构如下:

Name Null? Type

————————————— ————————- —————————-

TEACHER_ID NOT NULL NUMBER(9)

NAME VARCHAR2(25)

SALARY NUMBER(7,2)

SUBJECT_ID NOT NULL NUMBER(3)

SUBJECT_DESCRIPTION VARCHAR2(2)

编写一个SQL命令,实现以下要求,给所有的science teachers 增加 8%的工资 The SUBJECT_ID for science teachers 的SUBJECT_ID 值是011.

答案:UPDATE teacher

SET salary = salary * 1.08

WHERE subject_id = 011;

46.ORACLE数据库有哪几种约束类型

答案:五种。是PRIMARY KEY,FOREIGN KEY,UNIQUE,CHECK,NOT NULL。

47.在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?

答案:CHECK 约束。

48. RDBMS是下列哪一项的缩写:___

A Relational DataBase Management System(关系数据库管理系统)

B Relational DataBase Migration System(关系数据库移植系统)

C Relational Data Migration System(关系数据移植系统)

D Relational DataBase Manage System(关系数据库管理系统)

49. INSERT 是

A DML语句

B DDL语句

C DCL语句

D DTL语句

50. COUNT(*)函数返回____

A 包括空值和重复值得所有记录

B 不包含空值的纪录

C 带有重复值但无空值得记录

D 都不是

51.____什么操作符将两个查询的结果合并为单个结果

A 算术

B 比较

C 集合

D 以上都不是

52. .____什么操作符之返回两个查询的共有行

A  INTERSECT

B  UNION

C  MINUS

D  没有

53.日期函数是

A 分组函数

B 单行函数

C 聚合函数

D 都不是

54.SELECT CHR(66) FROM DUAL的结果是_____

A  Z

B  S

C  B

D  都不是

55.____函数返回一个值除以另一个值后的余数

A  MOD

B  ABS

C  CEIL

D  以上都不是

56.____函数返回列表中第一个非空的表达式

A  NVL

B  NVL2

C  COALESCE

D  以上都不是

57.____子句处理分组的结果

A  WHERE

B  HAVING

C  SELECT

D  以上都不是

58.什么锁用于锁定表,仅允许其他用户查询表中的行,行不允许插入,更新,或删除行

A  共享

B  排他

C  共享更新

D  以上都不是

59.使用带有____子句的SELECT命令可以在表的一行或多行上放置排他锁

A  FOR INSERT OF

B  FOR UPDATE OF

C  FOR REFRESH

D  EXCLUSIVE

60. 对象关系模型支持:

A 面向对象的概念和关系的概念

B 仅支持关系的概念

C 仅面向对象对象的概念

D 以上都不是

61. TRUNCATE TABLE 是用于____:

A 删除表结构

B 仅删除记录

C删除结构和记录

D都不是

62.同义词用于下列情况

1  隐藏对象的名称和所有者

2  提供对对象的公共访问

A  两者都对

B  1错  2对

C  两者都错

D  1对  2错

63._____是oracle提供的一个对象,可以生成唯一的连续的整数

A  同义词

B  序列

C  视图

D  没有

64.可以使用____和____伪列来访问序列

A  nextval和currentval

B  nextval和previousval

C  cache和nocache

D  以上都不对

65.下列有关视图的描述那一个是正确的

A  视图时已存储的查询

B  视图隐藏了数据的复杂性

C  视图就是表

D  视图不提供安全性

66._____是与表关联的可选结构

A  视图

B  索引

C  同义词

D  以上都不是

67.在下列哪种情况下,索引最有用

A  索引列被声明为not null

B  在where子句中使用了索引列

C  索引列包含许多不同的值

D  定义尽可能多的索引

68.检查下列创建的orders表的SQL语句

CREATE TABLE ORDERS(

SER_NO NUMBERUNIQUE,

ORDER_ID NUMBER,

ORDER_DATE DATE NOT NULL,

STATUS VARCHAR2(10) CHECK (STATUS IN (‘CREDIT’,’CASH’)),

PROD_ID NUMBER REFERENCES PRODUCTS(PRODUCT_ID),

ORD_TOTAL NUMBER,

PRIMARY KEY (ORDER_ID,ORDER_DATE)

当执行上述语句时,将自动为那些列创建索引

A  SER_ID

B  ORDER_ID

C  STATUS

D  PRID_ID

69 当在表加入一条数据时,如果其中一个字段未指定任何数据,此时该字段会存放什么值

A 0

B NULL

C ”(空字符)

D 不确定

(责任编辑:IT)