Oracle数据库中序列用法讲解.doc

上传人:sk****8 文档编号:3552272 上传时间:2019-06-04 格式:DOC 页数:4 大小:32.50KB
下载 相关 举报
Oracle数据库中序列用法讲解.doc_第1页
第1页 / 共4页
Oracle数据库中序列用法讲解.doc_第2页
第2页 / 共4页
Oracle数据库中序列用法讲解.doc_第3页
第3页 / 共4页
Oracle数据库中序列用法讲解.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。创建序列需要 CREATE SEQUENCE 系统权限。序列的创建语法如下:CREATE SEQUENCE 序列名 INCREMENT BY n START WITH n MAXVALUE/ MINVALUE n|NOMAXVALUE CYCLE|NOCYCLE CACHE n|NOCACHE;其中:INCREMENT BY 用于定义序列的步长,如果省略,则默认为 1,如果出现负值,则代表

2、序列的值是按照此步长递减的。START WITH 定义序列的初始值(即产生的第一个值),默认为 1。MAXVALUE 定义序列生成器能产生的最大值。选项 NOMAXVALUE 是默认选项,代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是 10 的 27次方;对于递减序列,最大值是-1。MINVALUE 定义序列生成器能产生的最小值。选项 NOMAXVALUE 是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10 的 26次方;对于递增序列,最小值是 1。CYCLE 和 NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYC

3、LE 代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;对于递 减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。CACHE(缓冲)定义存放序列的内存块的大小,默认为 20。NOCACHE 表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。删除序列的语法是:DROP SEQUENCE 序列名;删除序列的人应该是序列的创建者或拥有 DROP ANY SEQUENCE 系统权限的用户。序列一旦删除就不能被引用了。序列的某些部分也可以在使用中进行修改,但不能修改 SATRT WITH 选项。对序列的修改只影响随后产生的序号,已经产生的序

4、号不变。修改序列的语法如下:创建和删除序列例 1:创建序列:CREATE SEQUENCE ABC INCREMENT BY 1 START WITH 10 MAXVALUE 9999999 NOCYCLE NOCACHE;执行结果:序列已创建。步骤 2:删除序列:DROP SEQUENCE ABC;执行结果:序列已丢弃。说明:以上创建的序列名为 ABC,是递增序列,增量为 1,初始值为 10。该序列不循环,不使用内存。没有定义最小值,默认最小值为 1,最大值为 9 999 999。序列的使用如果已经创建了序列,怎样才能引用序列呢?方法是使用 CURRVAL 和NEXTVAL 来引用序列的值。

5、在编号的过程中,产生间隙的原因多种多样。如果一个存储过程从一个序列中挑选某个数字,定为本地变量,但是从来不用它,这个数字就丢失了。它将不能再返 回到原序列中,结果就造成数值序列中存在一个间隙。关系型数据库模型中不必担心这一点。但是有时候人们在意这一点,这些人想知道是哪些数字丢失了。调用 NEXTVAL 将生成序列中的下一个序列号,调用时要指出序列名,即用以下方式调用:序列名.NEXTVALCURRVAL 用于产生序列的当前值,无论调用多少次都不会产生序列的下一个值。如果序列还没有通过调用 NEXTVAL 产生过序列的下一个值,先引用CURRVAL 没有意义。调用 CURRVAL 的方法同上,要

6、指出序列名,即用以下方式调用:序列名.CURRVAL.产生序列的值。步骤 1:产生序列的第一个值:SELECT ABC.NEXTVAL FROM DUAL;执行结果:NEXTVAL - 10步骤 2:产生序列的下一个值:SELECT ABC.NEXTVAL FROM DUAL;执行结果:NEXTVAL - 11产生序列的当前值:SELECT ABC.CURRVAL FROM DUAL;执行结果:CURRVAL - 11说明:第一次调用 NEXTVAL 产生序列的初始值,根据定义知道初始值为10。第二次调用产生 11,因为序列的步长为 1。调用 CURRVAL,显示当前 值11,不产生新值。Or

7、acle 的解析函数为检查间隙提供了一种要快捷得多的方法。它们使你在使用完整的、面向集合的 SQL 处理的同时,仍然能够看到下 一个行(LEAD)或者前一行(LAG)的数值。查看序列同过数据字典 USER_OBJECTS 可以查看用户拥有的序列。通过数据字典 USER_SEQUENCES 可以查看序列的设置。例:查看用户的序列:SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER FROM USER_SEQUENCES;执行结果:SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY LAST_NUMBER说明:当前用户拥有两个序列:ABC 和 BOOKID。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。