mysql中伪例_2.oracle伪例+序列

我们知道在mysql中,截取数据用limit,但是oracle中不能用limit,oracle截取数据是用伪例,oracle中有个东西叫伪例(rownum),我们用伪例进行截取

一、伪例

1.什么是伪例是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数;

ROWNUM 表示行号,是一个伪列,可以在每一张表中出现应用

2.伪例的用法直接使用时,只能取行数小于、等于或小于等于几,(若要用大于和between,见下条)

select * from emp where rownnm <=5; //取到了前五行的数据截取某行到某行时,要套子查询使用,而且要起别名

select * from //取到了第五到第十的数据

(select rownum num,empno,ename,sal from emp )

where num between 5 and 10

select * from (select rownum rn,empno from emp) WHERE rn>3 //取第三行后的数据

(注意:取别名,把子查询里面的rownum 当成其一列,就可以比较了;取别名,是为了使非法的内容合法化)

二、序列

1.创建序列结构CREATE SEQUENCE 序列名称

[MAXVALUE num | NOMAXVALUE]

[MINVALUE num | NOMINVALUE]

[INCREMENT BY num START WITH 10]

[CACHE num | NOCACHE];

[CYCLE | NOCYCLE]

//创建序列指定开始的序列,默认的序列从10开始,100结尾的。

create sequence myseq start with 10 maxvalue 100 increment by 1 cache 20

(increment by 2 每次加2,这个数字根据需要任意写)

//验证

create table test (id number)

insert into test(myseq.nextval) //运行几次就插入几条数据 , nextVal: 取得序列的下一个内容

select*from test

注意:即使你清除了表中的数据,但是序列还是会根据你上次清楚的数字开始递增,不会从1开始重新递增,所以如果想让其重新递增,就只能删除这个序列,再重建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值