Oracle之序列(sequence)

我在这里记录一下学习序列的重要知识点。

一、递增序列的创建

(1)创建序列

drop sequence text_1;  --为了下一次的操作方便,都会在前面加这个,当然也可以删除
create sequence text_1       --关键词是sequence
start with 1     --从1开始
INCREMENT by 1   --步长是1
nocycle        --不循环,递增,(循环用cycle)
cache 5;         --一次在序列中生成5个数  oracle默认序列是从1开始的

(2)

  • dual:是oracle中虚拟表,进行一些操作不清楚的时候可以在里面试验。(如果还是不懂,白话解释就是:“之前select * from student 这些都是访问固定的表student。但是如果你想要试验某个操作,但是你没有表操作的时候,就可以用dual虚拟表”)

  • currval、nextval

    oracle的两个参数是currval、nextval。分别是当前值,和下一个值。但是在执行currval时,应先执行一遍nextval。要先有下一个值,才会出现当前值。因为是题目中是从1开始的,如果先nextval,然后会出现值1。然后再currval出现的值才是1。如果一开始就currval,第一个值还没有值。
    总之就是,先nextval再currval。

(3)查询

  • 先执行currval时,报错
select text_1.currval from dual;

在这里插入图片描述

  • 应该先执行nextval
select text_1.nextval from dual;

在这里插入图片描述再执行一遍就是
在这里插入图片描述依次往下执行,就会一直递增(因为上面我写的是nocycle)

二、循环序列之从1开始循环

(1)创建序列(循环时要设置最大值)

drop sequence text_2;  --为了下一次的操作方便,都会在前面加这个,当然也可以删除
create sequence text_2       --关键词是sequence
start with 1     --从1开始
maxvalue 3   --循环到最大值3
INCREMENT by 1   --步长是1
cycle        --循环
cache 2;         --一次在序列中生成2个数  oracle默认序列是从1开始的

(2)查询

select text_2.nextval from dual;

从1一直循环到3(我直接跳到了3这个位置)
在这里插入图片描述
再执行的时候应该跳到了1
在这里插入图片描述

三、循环队列之从100开始循环(重点!)

(1)创建序列(有雷!)先看下面这个,感受一下
循环时要注意(maxvalue-start的值)>=cache的值

--序列
drop sequence text_2;
create sequence text_2
start with 100     --从1开始
maxvalue 103
INCREMENT by 1   --步长是1
cycle        --不循环,递增,(循环用cycle)
cache 2;         --一次在序列中生成2个数  oracle默认序列是从1开始的

正常小伙伴看了觉得是:从100开始,步长为1,开始循环到103,然后再循环依次下去。
可是!!!!!当执行到103之后,不是100啦,从1开始了。
上图感受下!

在这里插入图片描述
下一次:
在这里插入图片描述

  • 此时,一定会有人问,为什么?

    因为序列默认是从1开始的

  • 那怎么办?
    只需要加上最小值即可。

修改:

drop sequence text_2;
create sequence text_2
start with 100     --从1开始
minvalue 100
maxvalue 103
INCREMENT by 1   --步长是1
cycle        --不循环,递增,(循环用cycle)
cache 2;         --一次在序列中生成2个数  oracle默认序列是从1开始的

然后查询:
select text_2.nextval from dual;
在这里插入图片描述
循环下面:
在这里插入图片描述
最后完成啦!

四、总结

两个参数currval、nextval。其中先执行nextval才可以执行currval。
递增的是nocycle。
循环时cycle,循环时要确认最大值,(最小值看需要)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄呀呀呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值