前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle数据库,浅谈Oracle序列

Oracle数据库,浅谈Oracle序列

作者头像
用户1289394
发布2021-05-08 10:45:42
1.6K0
发布2021-05-08 10:45:42
举报
文章被收录于专栏:Java学习网Java学习网

Oracle是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一,而序列是一个计数器,它并不会与特定的表关联,通过创建Oracle序列和触发器实现表的主键自增。序列一般是用来填充主键和计数的,不占用磁盘空间,占用内存。本期我们重点来讲述一下Oracle序列。

1、创建序列

ORACLE序列的语法格式为:

(1)、INCREMENT BY用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。

(2)、START WITH 定义序列的初始值(即产生的第一个值),默认为1。

(3)、MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。

(4)、MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。

(5)、CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;最小值为1。对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。

ORACLE OCP考试有道题关于序列,如下所示

(6)、CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。缓存选项会造成数据丢失,当实例异常关闭时。

2、删除序列

语法是DROP SEQUENCE [schema].序列名;

3、序列使用

CURRVAL: 返回序列的当前值。

NEXTVAL:序列递增,返回下一值。

你不能使用序列的CURRVAL和NEXTVAL,在下面情况下(具体参见官方文档):

(1)、在DELETE、SELECT、UPDATE的子查询中

(2)、在视图或物化事物的查询中。

(3)、SELECT查询中使用了DISTINCT操作符。

(4)、SELECT查询中有GROUP BY或ORDER BY

4、序列查看

5、序列修改

不能修改序列的初始值,否则会报ORA-02283

序列是一个节省时间的对象,因为它可以减少应用程序中产生序列程序的代码量。序列

号独立于表被存储和产生,因此,相同的序列可以被多个表使用。Oracle序列在某种程度上能够帮助Oracle数据库简化代码,提高效率。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档