oracle一列中间加一个字_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]

7ebfd82c66f5bf08700e0fda14b668f5.png
//创建序列指定开始的序列,默认的序列从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开始重新递增,所以如果想让其重新递增,就只能删除这个序列,再重建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值