Oracle学习 第5天之高级查询

逼着自已每天学一些,哪怕半小时

1、子查询:貌似和MsSQL差不多。有个ANY和ALL,忘了MsSQL有没有

SELECT * FROM emp
WHERE sal > ANY (SELECT SAL FROM EMP WHERE DEPTNO = 30)

大于任意值,即大于最小值,也可写成 > (SELECT MIN(SAL) FROM EMP WHERE DEPTNO = 30)

 

2、子查询中的空值

IN的话没问题,NOT IN碰到空就不行了,不知MsSQL会不会这样

IN等同于ANY,NOT IN等同于<> ALL

a not in (10, 20, null)
等同于a!=10 and a!=20 and a!=null

而判断null不能用=,只能用 IS NULL,所以会无返回值

一种改进是在子查询中加上 WHERE XX IS NOT NULL

 

3、rownum行号只能<和<=,用了>或>=无效,但不报错。。。

 

4、分页:不能像MySQL一样Limit了,Oracle分页还是利用rownum,但要嵌套子查询,而且要嵌两层。。。最里面的是自带的rownum,然后子查询中把rownum当作一列使用

posted @ 2016-06-13 21:46  文刂亻右景彡  阅读(156)  评论(0编辑  收藏  举报