史上最强的几道oracle面试题

在ctocio.com.cn上看到3道Oracle面试题,据说如果10分钟内能够全部回答正确,就说明你应该具备一个OCP所具有的思考能力。看似可以脱口而出的答案,在仔细思考后发现自己最开始的答案都不对,晕啊!下面是题,答案是我写的并非标准答案,如果浏览这篇Blog的朋友发现有错,请指出。呵呵

[@more@]

(1) A 表中有100条记录。SELECT * FROM A WHERE A.COLUMN1 = A.COLUMN1; 这个语句返回几条记录?

答:返回column1 is not null的记录数
注意:select * from a where a.column1=a.column1; select t1.* from a t1,at2 where t1.a=t2.a; 的区别。
后者是自连接而前者不是,因此返回的结果大不相同。

(2) CREATE SEQUENCE PEAK_NO…… SELECT PEAK_NO.NEXTVAL FROM DUAL --&gt 假设返回110秒钟后,再次做SELECT PEAK_NO.NEXTVAL FROM DUAL --&gt 返回多少?

答:不确定
注意:nextval第一次执行显示的是定义SEQstart with的值。而题目中建立SEQ没有指明increase by是多少,是否ordermaxvalue是多少,是否cycle,以及没有指定cache多少,10秒内是否有内存flush发生。

(3) SQL> connect sys as sysdba
Connected.

SQL> insert into dual values ( 'Y');
1 row created.

SQL> commit;
Commit complete.

SQL> select count(*) from dual;
COUNT(*)
----------
2

SQL> delete from dual;
commit;

--&gtDUAL里还剩几条记录?

答:题目本身错误。即使以SYSDBA权限可执行insert into DUAL,但在commit后的select count(*) from dual;结果仍然是1,不会出现2
注意:1. 不要轻易对DUAL做DML操作,否则容易造成数据字典"混乱"。例如导致数据库无法删除表等。2. SYSDBA外用户没有权限执行insert into DUAL3. DUAL is a table automatically created by Oracle along with the data dictionary. DUAL is in the schema of the user SYS, but is accessible by the name DUAL to all users. It has one column, DUMMY, defined to be VARCHAR2(1), and contains one row with a value ’X’. Selecting from the DUAL table is useful for computing a constant expression with the SELECT statement. For example: select sysdate from dual; select 2*4/7 from dual; select user from dual;  ---显示当前用户 。。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20294/viewspace-977086/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/20294/viewspace-977086/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值