`
hojor
  • 浏览: 109189 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle数据库中序列的用法

阅读更多

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

创建序列需要CREATE SEQUENCE系统权限。序列的创建语法如下:

CREATE SEQUENCE 序列名 
[INCREMENT BY n] 
[START WITH n] 
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] 
[{CYCLE|NOCYCLE}] 
[{CACHE n|NOCACHE}];
 INCREMENT BY 用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。

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

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

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

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

CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。

删除序列的语法是:
DROP SEQUENCE 序列名;

 其中:

删除序列的人应该是序列的创建者或拥有DROP ANY SEQUENCE系统权限的用户。序列一旦删除就不能被引用了。

序列的某些部分也可以在使用中进行修改,但不能修改SATRT WITH选项。对序列的修改只影响随后产生的序号,已经产生的序号不变。修改序列的语法如下:

创建和删除序列

例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来引用序列的值。

在编号的过程中,产生间隙的原因多种多样。如果一个存储过程从一个序列中挑选某个数字,定为本地变量,但是从来不用它,这个数字就丢失了。它将不能再返回到原序列中,结果就造成数值序列中存在一个间隙。关系型数据库模型中不必担心这一点。但是有时候人们在意这一点,这些人想知道是哪些数字丢失了。

调用NEXTVAL将生成序列中的下一个序列号,调用时要指出序列名,即用以下方式调用:

序列名.NEXTVAL

CURRVAL用于产生序列的当前值,无论调用多少次都不会产生序列的下一个值。如果序列还没有通过调用NEXTVAL产生过序列的下一个值,先引用CURRVAL没有意义。调用CURRVAL的方法同上,要指出序列名,即用以下方式调用:

序列名.CURRVAL.

产生序列的值。

步骤1:产生序列的第一个值:

SELECT ABC.NEXTVAL FROM DUAL;

执行结果:
 

NEXTVAL 
------------------ 
10

 步骤2:产生序列的下一个值:

SELECT ABC.NEXTVAL FROM DUAL;

执行结果

CURRVAL 
-------------------- 
11

  说明:第一次调用NEXTVAL产生序列的初始值,根据定义知道初始值为10。第二次调用产生11,因为序列的步长为1。调用CURRVAL,显示当前值11,不产生新值。Oracle的解析函数为检查间隙提供了一种要快捷得多的方法。它们使你在使用完整的、面向集合的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。
分享到:
评论

相关推荐

    Oracle数据库中序列的使用

    本文将详细介绍Oracle数据库中序列的创建、修改以及删除方法,并通过一个具体的示例来演示序列的使用。 #### 序列的基本概念 序列是一种能够按需生成连续整数的数据库对象。它可以用于自动填充某些字段,特别是当...

    中南大学Oracle数据库课件

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据重要地位。"中南大学Oracle数据库课件"包含了一系列关于Oracle数据库的重要主题,旨在深入理解Oracle的系统架构、数据存储、对象管理...

    Oracle数据库学习课件

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,尤其在企业级应用中占据主导地位。本课程资源专为初学者设计,旨在提供一个全面且实践性强的学习路径,帮助你理解和掌握Oracle数据库的基础知识和操作技巧。...

    Oracle数据库从入门到精通

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,它以其强大的功能、高效的数据处理能力和高可用性而闻名。这份“Oracle数据库从入门到精通”的资料,旨在为初学者提供一条系统的学习路径,帮助他们从...

    oracle数据库中锁、序列、索引管理.docx

    总的来说,Oracle数据库中的锁、序列和索引管理是保证数据一致性和优化查询性能的核心要素。理解这些概念并熟练掌握其使用,对于任何Oracle数据库管理员来说都是至关重要的。通过适当配置和管理,可以确保数据库在多...

    Mysql Oracle 数据库开发设计及使用规范

    - Oracle数据库中不推荐使用物化视图,如确需使用请联系DBA。 **2.4 序列命名** - 采用`SEQ+_+用途`的格式命名。 - 序列名称长度限制为30个字符。 **2.5 存储过程/函数命名** - 过程命名采用`PRO+_+过程名称`的...

    Oracle数据库基础教程:入门其实很简单

    - 创建序列:CREATE SEQUENCE语句的使用方法。 - 使用序列:NEXTVAL、CURRVAL等序列操作的使用。 6. **用户、角色与权限控制**: - 用户管理:如何创建、修改、删除用户。 - 角色管理:如何创建、分配角色。 -...

    vcenter6.0采用oracle11g独立数据库

    2. **在Oracle数据库中创建相关表空间和用户**: - **创建表空间**:使用以下SQL命令创建一个名为“VPX”的表空间,该表空间将用于存储vCenter Server的所有数据。 ``` CREATE SMALLFILE TABLESPACE "VPX" DATA...

    oracle数据库备份与恢复测试

    根据提供的文件信息,我们可以从中提炼出Oracle数据库备份与恢复的...通过以上知识点的讲解,我们了解了Oracle数据库备份与恢复的基本流程、常见问题及其解决方法。这对于Oracle数据库管理员来说是非常重要的技能之一。

    老二牛车在Oracle数据库上构建JAVA应用程序二理论课.pdf

    Oracle数据库中的表、序列和触发器的创建与应用 #### 1.1 创建表空间、用户和表 - 创建表空间:使用`CREATE TABLESPACE`语句,为数据库指定表存储的逻辑区域。 - 创建用户:使用`CREATE USER`语句,并设置用户的...

    Oracle 数据库学习教程

    Oracle入门章节为读者介绍Oracle数据库环境的基本使用方法。查询基础是数据库操作的核心,涉及到基本的SELECT语句,是进行数据检索和分析的基础。单行函数和分组函数是进行数据处理的重要工具,单行函数用于处理单条...

    oracle 不用新建序列 重置序列(从1开始增长)

    在Oracle数据库管理中,序列是一种常用的对象,用于自动产生唯一的数值。序列通常被用来作为主键或唯一标识符,特别是在自动生成记录ID时。然而,有时候我们可能需要重置序列,使其从特定值开始,例如从1开始增长,...

    Oracle数据库基础知识

    Oracle数据库的基础知识包括数据库的结构、存储管理、管理方法、网络应用以及常用任务处理技巧。通过学习和掌握这些知识,可以有效地管理和利用Oracle数据库,满足企业和组织的数据库需求。此外,随着技术的发展,...

    oracle数据库主键自动生成

    在 Oracle 数据库中,可以使用以下语句创建一个序列: ```sql CREATE SEQUENCE 序列名 MINVALUE 1 MAXVALUE 9999999999999999999999999999 NOCYCLE CACHE 20; ``` 这个序列从 1 开始,每次增加 5, cache 20 表示...

    Oracle数据库实验

    在实训的过程中,学生不仅需要学习Oracle 10g的安装与配置,还要熟悉Oracle的常用工具,如企业管理器、SQL*Plus和iSQL*Plus的使用方法。通过实训,学生可以了解数据库产品、客户端产品和企业管理产品的功能与特点。...

    VC多线程操作ORACLE数据库

    本文将深入探讨如何在VC++环境中使用多线程技术来高效地操作Oracle数据库,旨在提供一个详细的知识框架。 首先,我们要了解什么是多线程。多线程是指在一个进程中可以同时执行多个独立的线程,每个线程都有自己的...

    Oracle数据库中的废弃对象清理.pdf

    本文主要探讨了如何在Oracle数据库中识别和清理废弃对象,特别关注了废弃表的检查方法。在Oracle中,废弃对象的检查通常依赖于数据库自身的数据字典和审计功能。 首先,对于废弃表的检查,Oracle提供了审计功能。...

Global site tag (gtag.js) - Google Analytics