Oracle之序列

序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。

创建序列

create sequence 序列名

[START WHITH n] 初始值

[INCREMENT BY n] 设置递增步长

[MINVALUE n | NOMINVALUE] 最小值,NOMINVALUE表示无最小值

[MAXVALUE n | NOMAXVALUE] 最大值,NOMAXVALUE表示无最大值

[CYCLE | NOCYCLE] 循环

[CACHE n | NOCACHE] 内存中存储值得个数

START WHITH n 设置初始值,表示开始的值当未设置的时候,递增序列初始值为minvalue,递减序列初始值为maxvalue。

[INCREMENT BY n] 设置递增步长,n为正数表示递增,负数表示递减。

NEXTVAL 返回序列中下一个有效的值,任何用户都可以引用。CURRVAL 中存放序列的当前值。NEXTVAL 应在 CURRVAL 之前指定 ,二者应同时有效。

[CYCLE | NOCYCLE] 循环,不循环。循环是指则当递增序列达到最大值时,循环到最小值;最小值为1。对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。

cache的作用:当大量语句发生请求,申请序列时,为了避免序列在运用层实现序列而引起的性能瓶颈。Oracle序列允许将序列提前生成 cache x个先存入内存,在发生大量申请序列语句时,可直接到运行最快的内存中去得到序列。但cache只是存在缓存中,每一次重启都会重新生成。

create sequence stuno

start with 26

increment by 1

minvalue 1

nomaxvalue

nocycle

cache 20;

使用序列

CURRVAL 返回序列当前值。

NEXTVAL 返回当前序列值增加一个步长后的下一个值。

注;在创建好序列之后无法直接使用currval来返回当前值,第一次要使用nextval返回的序列的初始值:随后的nextval会自动增加定义的increment by值,且currval表示当前值。

create table seq_tab(

stuno number(10),

stuname varchar2(8)

);

insert into seq_tab values(stuno.nextval,'name1');

insert into seq_tab values(stuno.currval,'name2');

查询序列

select * from user_sequences;查看当前user的所用序列。

select * from user_sequences where sequence_name='序列名';查询某一个序列,注意序列名需要大写。

select * from user_sequences;

select * from user_sequences where sequence_name='STUNO';

删除序列

DROP SEQUENCE 序列名;

drop sequence stuno;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 34,867评论 18 399
  • 1.伪表,伪列 1.1.伪表dual 概念:就是一个不真实存在的虚拟表.伪表的作用就是用来构造一个符合sql规则的...
    随手点灯阅读 1,334评论 1 7
  • 5.DML DML 语句 语句操作语言 INSERT UPDATE DELETE MERGE INSERT 方法:...
    乔震阅读 1,154评论 0 0
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 12,554评论 6 13
  • 成都,一个都市繁荣与市井交融屹立在西南的中心的城市。 刘禅的乐不思蜀,赵雷的一首《成都》,这些都吸引着那些入川想目...
    子琪H阅读 384评论 0 1

友情链接更多精彩内容