oracle---view,sequence,rownum

[code]
1.视图:
功能:封装了一条复制的查询语句
create view 视图名称 as 子查询 ----视图不能像表一样修改的,没有视图结构修改这个说法
在Oracle中提供了一个替换视图的命令,如果没有替换命令,那么要修改视图只能删了再重建

CREATE OR REPLACE 视图名称 AS 子查询----系统进行删除及重建工作
注意:我们不应该update视图,因为如果我们update视图的话,那么他会修改实体表,
而视图的查询是有条件的,所以我们很可能在这个视图中看不到我们修改的数据,既然我们把视图当成一张表,
那么这种效果当然不合乎逻辑,为了避免这种情况,下面语法
1。with check option :不能更新视图的创建条件 (检查where的option,意思是不能更新where的选项)

create or replace view emp20
as
select * from emp where deptno = 20
with check option;//这句话的意思是deptno这个东西不能这样做 update emp20 set deptno = 30 where deptno = 20;
但是可以这样做: update emp20 set ename = 'aa' where deptno = 20;
视图的本身作用是查询而不是干其他的,不应该运行更改,所以我们应该加入第二条语句
create or replace view emp20
as
select * from emp where deptno = 20
with read only;

2. 序列:
在很多数据库系统中都存在一个自动增长的列,如果现在要想在oracle中完成自动增长的功能,
则只能依靠序列完成,所有的自动增长操作,需要用户手工完成
create sequence myseq; //说白了,这就是一个变量而已
序列创建完成之后,所有的自动增长应该由用户自己处理,所以在序列中提供了一下两个操作
nextval ---取得序列的下个内容
currval--- 取得序列的当前内容
insert into emp (empno) values (myseq.nextval);
drop sequence myseq;

如果想创建每次增长2的序列变量怎么办
create sequence myseq increment by 2 ;//这样每次取得都是奇数

默认情况下序列从1开始
create sequence myseq increment by 2 start with 10


3.ROWNUM---Oracle中的东西
ROWNUM说白了,每张表Oracle都会自动添加一个字段叫做ROWNUM
使用:现在只想显示前5条记录
select * from book where ROWNUM <= 5;
但是他和正常的列还是不同滴。。。因为select * from book where ROWNUM between 5 and 10; //会报未选定行
他只能从头开始或者从尾开始
所以,如果想要进行中间的截取操作,则只能使用子查询,因为使用了子查询之后,他作为一张临时表,他就变成了普通字段
例如现在假设每页显示5条,第二页应该显示6~10条,那么对于数据库操作来说,他在查询的时候应该首先查询出1~10条,
然后再取出后5条
select *
from (select ROWNUM rn,id from book where rn<=10) t
where t.rn >5

[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值