我们知道在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开始重新递增,所以如果想让其重新递增,就只能删除这个序列,再重建