设为首页 加入收藏

TOP

Oracle数据库面试题汇总(五)
2014-11-24 02:23:03 来源: 作者: 【 】 浏览:368
Tags:Oracle 数据库 试题 汇总
hen3,…,else),表示如果value等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
2. 如何用decode进行大于小于的比较?
利用sign()函数和DECODE和在一起用
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual;


decode(条件,值1,翻译值1,值2,翻译值2,…值n,翻译值n,缺省值)
该函数的含义如下:
IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ……
ELSIF 条件=值n THEN
    RETURN(翻译值n)


ELSE
    RETURN(缺省值)
END IF
使用方法:
1、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; –取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1


例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。


2、表、视图结构转化
现有一个商品销售表sale,表结构为:
month    char(6)      –月份
sell    number(10,2)   –月销售金额


现有数据为:
200001  1000
200002  1100
200003  1200
200004  1300
200005  1400
200006  1500
200007  1600
200101  1100
200202  1200
200301  1300


想要转化为以下结构的数据:
year   char(4)      –年份
month1  number(10,2)   –1月销售金额
month2  number(10,2)   –2月销售金额
month3  number(10,2)   –3月销售金额
month4  number(10,2)   –4月销售金额
month5  number(10,2)   –5月销售金额
month6  number(10,2)   –6月销售金额
month7  number(10,2)   –7月销售金额
month8  number(10,2)   –8月销售金额
month9  number(10,2)   –9月销售金额
month10  number(10,2)   –10月销售金额
month11  number(10,2)   –11月销售金额
month12  number(10,2)   –12月销售金额


结构转化的SQL语句为:
create or replace view
v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12)
as
    select
    substrb(month,1,4),
    sum(decode(substrb(month,5,2),’01′,sell,0)),
    sum(decode(substrb(month,5,2),’02′,sell,0)),
    sum(decode(substrb(month,5,2),’03′,sell,0)),
    sum(decode(substrb(month,5,2),’04′,sell,0)),
    sum(decode(substrb(month,5,2),’05′,sell,0)),
    sum(decode(substrb(month,5,2),’06′,sell,0)),
    sum(decode(substrb(month,5,2),’07′,sell,0)),
    sum(decode(substrb(month,5,2),’08′,sell,0)),
    sum(decode(substrb(month,5,2),’09′,sell,0)),
    sum(decode(substrb(month,5,2),’10′,sell,0)),
    sum(decode(substrb(month,5,2),’11′,sell,0)),
    sum(decode(substrb(month,5,2),’12′,sell,0))
    from sale
    group by substrb(month,1,4);


79、CASE语句的用法?
Oracle用法很简单:
SELECT last_name, job_id, salary
CASE job_id
WHEN ‘IT_PROG’ THEN 1.10*salary
WHEN ‘ST_CLERK’ THEN 1.15*salary
WHEN ‘SA_REP’ THEN 1.20*salary
ELSE salary END “REVISED_SALARY”
FROM employees


80、 truncate和delete的区别?
 1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
  2、TRUNCATE是一个DDL语言而DELETE是DML语句,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
  3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
  4、TRUNCATE不能触发触发器,DELETE会触发触发器。
  5、不能授予任何人清空他人的表的权限。
  6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
  7、不能清空父表。
81、 表空间如何扩展?并用语句写出?
两种扩展方式:
a) 增加数据文件
alter tablespace tablespace_name add datafile ‘’ xxMB
b) 扩展数据文件大小
alter database datafile ‘’ resize newMB
82、 表空间区管理方式?哪种方式现在是推荐使用的?
a) 字典管理方式
extent management dictionary;默认方式
b) 本地管理方式
extent management local[autoallocate/uniform xxmb];
83、 用什么函数获得日期?和日期中的月,日,年
to_char(sysdate,’year’):tow thsound six to_char(sysdate,’yyyy’) :2006
to_char(sysdate,’month’):8月 to_char(sysdate,’mm’):08
to_char(sysdate,’day’):星期4 to_char(sysdate,’dd’):22
84、 分区表的应用?


a) 一个分区表有一个或多个分区,每个分区通过使用范围分区、散列分区、或组合分区分区的行
b) 分区表中的每一个分区为一个段,可各自位于不同的表空间中
c) 对于同时能够使用几个进程进行查询或操作的大型表分区非常有用


85、 谈谈索引的用法及原理?
索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据块的I/O次数,因此可以显著提高性能。
86、 存储过程的应用,如何既有输入又有输出?
Create procedure pro_name
(xxxx in/out type;
yyyy in/out/

首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java笔试题整合 24页word文档贴出.. 下一篇两个单链表相交,计算相交点

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: