Oracle复习笔记(三)
20000;
8. 说明以下两条SQL语句的输出结果:
SELECT EMPNO,COMM FROM EMP WHERE COMM IS NULL; --有结果
SELECT EMPNO,COMM FROM EMP WHERE COMM = NULL; --无结果
9. 让SELECT 语句的输出结果为
1. SELECT * FROM SALGRADE;
2. SELECT * FROM BONUS;
3. SELECT * FROM EMP;
4. SELECT * FROM DEPT;
5. ……
列出当前用户有多少张数据表,结果集中存在多少条记录。
select 'SELECT * FROM ' || tab.tname || ';' from tab;
select * from tab;
10. 判断SELECT ENAME,SAL FROM EMP WHERE SAL > '1500'是否报错,为什么?
--不会报错,Oracle会检测是否可转为数字格式,如果可以将隐士转换,不可则报错。
/*----------------------------------------Oracle SQL:经典查询练手第三篇----------------------------------------*/
/*Oracle分页查询*/
--三层嵌套分页
select e2.* from (select e1.*,rownum rn from (select * from emp order by empno) e1 where rownum <= 5) e2 where e2.rn >
0;
--减集分页(不能排序?)
select * from emp where rownum<=5 minus select * from emp where rownum<=0;
--多表连接分页查询(第一层需要指定显示列,列名不能用重复)
select b.* from
(select rownum rn,a.* from (select e.*,d.dname,d.loc from emp e,dept d where e.deptno = d.deptno order by e.empno) a
where rownum <=5) b where b.rn >=1;
/*查询高于自己部门平均工资的员工信息*/
select e2.empno,e2.ename,e2.sal,e2.deptno,e1.deptavgsal
from emp e2,(select deptno,avg(sal) deptavgsal from emp group by deptno) e1
where e2.deptno = e1.deptno and e2.sal > e1.deptavgsal;