oracle 数据库开发面试题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 数据库开发面试题相关的知识,希望对你有一定的参考价值。
近期參加了数场面试,总结一下竞聘oracle 开发岗位最常问到哪些问题:
1、delete 与 truncate 差别?
1)truncate 是DDL语句。delete 是DML语句;
2)truncate 速度远快于 delete。
原因是:当我们运行delete操作时全部表数据先被copy到回滚表空间,数据量不同花费时间长短不一。
而truncate是直接删除数据不进回滚表空间。
3)接(2)这也就导致了delete数据后我们能够执行rollback进行数据回滚,而truncate则是永久删除不能回滚。
4)truncate 操作不会触发表上的delete触发器,而delete会正常触发;
5)truncate语句不能带where条件意味着仅仅能所有数据删除,而delete可删除部分数据;
6)truncate 操作会重置表的高水位线(High Water Mark),而delete不会。
ps: 有关高水位线HWM知识清參考文章:http://blog.csdn.net/indexman/article/details/25910255
2、解释一下数据库三范式?
请參考:http://blog.csdn.net/indexman/article/details/19907731
3、NVL与NVL2两个函数的使用方法和差别?
NVL (expr1, expr2):expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
NVL2 (expr1, expr2, expr3) :expr1不为NULL。返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
看一下官方演示样例:commission即为工资提成
[email protected]> SELECT last_name, NVL(TO_CHAR(commission_pct), 'Not Applicable') 2 "COMMISSION" FROM employees 3 WHERE last_name LIKE 'B%' 4 ORDER BY last_name; LAST_NAME COMMISSION ------------------------- ---------------------------------------- Baer Not Applicable Baida Not Applicable Banda .1 Bates .15 Bell Not Applicable Bernstein .25 Bissot Not Applicable Bloom .2 Bull Not Applicable
[email protected]> SELECT last_name, salary, NVL2(commission_pct, 2 salary + (salary * commission_pct), salary) income 3 FROM employees WHERE last_name like 'B%' 4 ORDER BY last_name; LAST_NAME SALARY INCOME ------------------------- ---------- ---------- Baer 10000 10000 Baida 2900 2900 Banda 6200 6820 Bates 7300 8395 Bell 4000 4000 Bernstein 9500 11875 Bissot 3300 3300 Bloom 10000 12000 Bull 4100 4100
4、集合操作符minus和interset
如果表A和表B数据例如以下:
表A:
data
----------
a
b
b
c
表B
data
----------
b
c
d
d
问1:SELECT DATA FROM A MINUS SELECT DATA FROM B; 运行结果?
--------------------------------------------------------------------------------------------------
答案:
a
问2:SELECT DATA FROM A INTERSECT SELECT DATA FROM B; 运行结果?
答案:
b
c
集合操作符总结:
1)UNION:由每一个查询 选择的 全部不反复的行组成。
并集不包括反复值,
默认按第
1 个查询的第
1 列升序排列。
2)UNION ALL: 由每一个查询 选择的 全部的行,全然并集包括反复值,
不排序。
3) MINUS : 在第一个查询中, 不在后面查询中的行。不包括反复, 按第1
个查询的第
1
列升序排列。
4)INTERSECT: 取每一个查询结果的交集, 不包括反复行, 按第1 个查询的第 1 列升序排列。
敬请期待!
------------------------------
Dylan Presents.
以上是关于oracle 数据库开发面试题的主要内容,如果未能解决你的问题,请参考以下文章