在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 --> 假设返回1。10秒钟后,再次做SELECT PEAK_NO.NEXTVAL FROM DUAL --> 返回多少?
答:不确定
注意:nextval第一次执行显示的是定义SEQ时start with的值。而题目中建立SEQ没有指明increase by是多少,是否order,maxvalue是多少,是否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;
-->DUAL里还剩几条记录?
答:题目本身错误。即使以SYSDBA权限可执行insert into DUAL,但在commit后的select count(*) from dual;结果仍然是1,不会出现2。
注意:1. 不要轻易对DUAL做DML操作,否则容易造成数据字典"混乱"。例如导致数据库无法删除表等。2. 除SYSDBA外用户没有权限执行insert into DUAL。3. 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/