设为首页 加入收藏

TOP

Oracle学习笔记11--视图(VIEW)(二)
2014-11-23 21:43:05 来源: 作者: 【 】 浏览:38
Tags:Oracle 学习 笔记 11-- 视图 VIEW
m emp e , dept d
where d.deptno = e.deptno

当执行select * from view_emp ;语句时,与上面的多表查询的效果是一样的。使用试图可以简化操作。

删除视图

基本语法:

DROP VIEW view_name ;

删除视图只是删除用户自己创建的视图,不会对基表中的数据产生影响。

例:删除上面定义的视图emp_view 。

drop view emp_name ;

Rownum 伪列

上面提到了一个新的知识点rownum 伪劣,下面进行具体的解释一下。rownum 有点类似与excel中的表示行

的序号。实际上这是一个列,伪劣,可以在每张表中出现。

例:查询表emp中的rownum 。

SQL> select rownum , empno from emp ;

ROWNUM EMPNO
---------- -----
1 7369
2 7499
3 7521
4 7566
5 7654
6 7698
7 7782
8 7788
9 7839
10 7844
11 7876
12 7900
13 7902
14 7934
15 7935

15 rows selected

如果现在想要查询工资从高到低的前五条的数据,那么

SQL> select rownum , empno,sal from emp where rownum <= 5 order by sal desc;

ROWNUM EMPNO SAL
---------- ----- ---------
1 7935 5000.00
5 7566 2975.00
3 7499 1600.00
4 7521 1250.00
2 7369 800.00

观察上面的数据,虽然是按照sal从高到低的排序,但是却不是我们想高的最高的五条数据的排序。其实rownum和empno之间有某种关系,想要打破这中关系,可以使用下面的语句。

select rownum , empno,sal
from(
select rownum , empno,sal
from emp order by sal desc
)
where rownum <= 5

ROWNUM EMPNO SAL
---------- ----- ---------
1 7935 5000.00
2 7839 5000.00
3 7788 3000.00
4 7902 3000.00
5 7566 2975.00

上面的查询结果才是我们想要的结果。

如果我们想要查询3到8之间的数据呢 ?可以使用下面的数据

select rn ,empno ,sal from(
select rownum rn , empno,sal
from(
select rownum , empno,sal
from emp order by sal desc
)
)
where rn >=3 and rn <=8

RN EMPNO SAL
------ ----- ---------
3 7902 3000.00
4 7788 3000.00
5 7566 2975.00
6 7698 2850.00
7 7782 2450.00
8 7900 2000.00

6 rows selected

上面给rownum 起了一个别名,将这个伪劣化为了一个实实在在存在的列,便可以进行 where rn > = 3 和 rn

<=8的操作了。

注意:

对 ROWNUM只能使用 < 或 <=, 而用=, >, >= 都将不能返回任何数据。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle(2)数据库 下一篇2014年第一季度OraclePSU更新(包..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: