Oracle数据库知识——序列篇

一、序列定义:

序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。不占用磁盘空间,占用内存。
其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。

我们都知道,开发过程中有时候需要数据库中的主键是数字类型并且自增,mysql、sql server中都可以使用工具创建表的时候实现,但是oracle中没有设置自增的方法,一般情况我们会使用序列和触发器来实现主键自增的功能。

(触发器详解:https://blog.csdn.net/Java_15707951907/article/details/90230575

二、序列的创建:

CREATE SEQUENCE sequence //创建序列名称
[INCREMENT BY n] //递增的序列值是 n 如果 n 是正数就递增,如果是负数就递减 默认是 1
[START WITH n] //开始的值,递增默认是 minvalue 递减是 maxvalue
[{MAXVALUE n | NOMAXVALUE}] //序列可生成的最大值  
[{MINVALUE n | NOMINVALUE}] //序列可生成的最小值
[{CYCLE | NOCYCLE}] //用于定义当序列产生的值达到限制值后是否循环(CYCLE:循环,NOCYCLE:不循环)
[{CACHE n | NOCACHE}];//表示缓存序列的个数,数据库异常终止可能会导致序列中断不连续的情况,默认值为20,如果不使用缓存可设置NOCACHE
​

举例:

create sequence my_seq 
increment by 1 
start with 1
nomaxvalue 
nocycle 
cache 20;

三、序列的使用:

序列创建后,可以使用序列的NEXTVAL来获取序列的下一个值,使用CURRVAL来查看当前值。第一次使用必须先使用NEXTVAL来产生一个值后才可以使用CURRVAL进行查看。

//序列调用 产生一个新的序列
select my_seq.nextval from dual

//查看当前序列的值
select my_seq.currval from dual

//向表中插入数据时使用
insert into 表名 (id) values (序列名.nextval)

修改和删除:

使用 alter 命令进行修改

使用 drop 命令删除 

四:序列约束条件:

1、序列第一次必须先调用nextval获取一个序列值才能使用currval查看当前值

2、序列的起始值不能小于最小值

3、创建一个循环序列,则必须要设定最大值

4、如果创建带缓存的序列,缓存的值必须满足约束公式: 最大值-最小值>=(缓存值-1)*每次循环的值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值