1 --分页查询---begin
2 --sqlserver top
3 --mysql limit
4 --oracle rownum(伪列),oracle中伪列(rownum,rowid)
1 --查询工资为前五的信息
2 SELECT ROWNUM,tmp.* FROM (SELECT * FROM emp WHERE SAL IS NOT NULL ORDER BY sal DESC) tmp;
3 --查询工资在第6条至第12条的信息
4 --方法一:
5 --1.查询在前12(包含第12条)的信息
6 SELECT sal FROM (SELECT * FROM emp WHERE SAL IS NOT NULL ORDER BY sal DESC) WHERE ROWNUM <=12;
7 --2.查询在前6(包含第六条)的信息
8 SELECT sal FROM (SELECT * FROM emp WHERE SAL IS NOT NULL ORDER BY sal DESC) WHERE ROWNUM <=5;
9 --3.
10 SELECT ROWNUM, tmp.*
11 FROM (SELECT * FROM emp WHERE sal IS NOT NULL ORDER BY sal DESC) tmp
12 WHERE sal IN
13 (SELECT sal
14 FROM (SELECT * FROM emp WHERE sal IS NOT NULL ORDER BY sal DESC)
15 WHERE rownum <= 12)
16 AND sal NOT IN
17 (SELECT sal
18 FROM (SELECT * FROM emp WHERE sal IS NOT NULL ORDER BY sal DESC)
19 WHERE rownum <= 5);
20 --方法二:嵌套子查询
21 SELECT tem.*
22 FROM (SELECT rownum r, tmp.*
23 FROM (SELECT * FROM emp WHERE sal IS NOT NULL ORDER BY sal DESC) tmp) tem
24 WHERE tem.r BETWEEN 6 AND 12;
25
1 --查询工资最高的第6条到第12条的员工信息
2 --1.
3 SELECT *
4 FROM (SELECT rownum row_top ,tt.*
5 FROM (SELECT e.*
6 FROM employees e
7 WHERE e.salary IS NOT NULL
8 ORDER BY salary DESC) tt)
9 WHERE row_top BETWEEN 6 AND 12;
10 --2. 效率较于1
11 SELECT *
12 FROM (SELECT rownum row_top, tt.*
13 FROM (SELECT rownum rn, e.*
14 FROM employees e
15 WHERE e.salary IS NOT NULL
16 ORDER BY salary DESC) tt)
17 WHERE row_top <= 12
18 AND row_top >= 6;
19 --3.效率较于2---推荐使用
20 SELECT *
21 FROM (SELECT rownum rn, tt.*
22 FROM (SELECT *
23 FROM employees e
24 WHERE e.salary IS NOT NULL
25 ORDER BY salary DESC) tt
26 WHERE rownum <= 12)
27 WHERE rn >= 6
26 --视图
27 --查询全部的20号 部门的雇员信息(雇员编号,姓名,工作,雇佣日期)
28 CREATE OR REPLACE VIEW view20 AS SELECT empno, ename, job, hiredate FROM emp WHERE deptno = 20;
29 --创建视图v_dept:查询每个部门的编号,名称,员工人数,员工工资总和
30 CREATE OR REPLACE VIEW v_dept AS
31 SELECT e.deptno,d.dname,COUNT(e.empno) c, SUM(e.sal) s
32 FROM emp e
33 FULL JOIN dept d
34 ON e.deptno = d.deptno
35 GROUP BY e.deptno,d.dname;
36
37 SELECT * FROM v_dept WHERE c >= 3;
38 SELECT Count(*) from emp;