`
jiajunde
  • 浏览: 169645 次
  • 性别: 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;

执行结果:

NEXTVAL 
------------------- 
11

 

产生序列的当前值:

SELECT ABC.CURRVAL 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数据库环境的基本使用方法。查询基础是数据库操作的核心,涉及到基本的SELECT语句,是进行数据检索和分析的基础。单行函数和分组函数是进行数据处理的重要工具,单行函数用于处理单条...

    oracle数据库备份与恢复测试

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

    Oracle数据库培训资料

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,它由甲骨文公司(Oracle Corporation)开发和提供。Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗等多个行业中广泛应用。以下是一份详细...

    Oracle数据库管理员手册.pdf

    实例(Instance)是指一组Oracle数据库后台进程/线程以及它们使用的内存结构的集合,在1.3节中详细讲解了其构成。此外,数据库的内部结构在1.4节中得到了全面的覆盖,其中包括表、列及数据类型(1.4.1),约束条件...

    Oracle数据库经典学习教程

    - 讲解了Oracle数据库中的各种对象及其管理方式。 - 掌握这些对象的使用方法有助于优化数据库性能和数据管理效率。 #### 五、PL/SQL程序设计 - **PL/SQL简介** - PL/SQL(Procedural Language for SQL)是Oracle...

    oracle数据库教程

    4. **数据库对象**:Oracle数据库中的对象包括表、视图、索引、存储过程、触发器、序列、同义词等。教程会解释每种对象的作用和创建方法,以及如何进行对象权限管理,确保数据的安全性。 5. **函数和操作符**:...

    jsp中连接oracle数据库的javabean

    本篇将深入讲解如何创建一个JavaBean来连接Oracle数据库,并在JSP中使用它。 首先,让我们了解JavaBean的基本概念。JavaBean是一种符合特定规范的Java类,它可以被其他Java组件或应用程序(如JSP页面)用来存储和...

    Oracle数据库教程

    Oracle数据库教程是一套全面介绍Oracle数据库系统使用和管理的教材。内容涵盖了从基础概念到高级特性,从日常维护到系统架构设计的全方位知识点。以下为详细知识点: 1. 数据库基础:介绍了数据库的基本概念,包括...

    Oracle数据库SQL培训 数据库SQL语句编写培训教程 Oracle高级查询SQL优化 集合实际案例讲解 共26页.pptx

    Oracle数据库SQL培训主要聚焦在如何高效地编写和优化SQL语句,特别针对Oracle数据库系统。在高级查询方面,课程涵盖了几个关键概念和技术: 1. **上期数/上年数**:这是时间序列分析中的基本概念,用于比较当前时期...

    Oracle数据库案例教程_教师用书

    本书通过一系列专题深入浅出地讲解了Oracle数据库的各种功能和操作技巧,从基础的安装配置到高级的数据库管理,涵盖了Oracle数据库的各个方面。下面将对文件中提到的几个关键知识点进行详细阐述: ### Oracle入门 ...

    《ORACLE数据库应用》课程教学大纲.docx

    《ORACLE数据库应用》课程是针对信息管理与信息系统专业的一门选修课,旨在让学生掌握Oracle数据库的基础操作、体系结构及管理方法。课程共32学时,包括16学时的理论讲解、16学时的实验和上机实践。在学习这门课程后...

    Oracle 数据库应用:第9章 管理数据库对象.ppt

    本章主要讲解如何有效地管理和操作数据库中的各种对象,包括创建和修改表、定义约束、查看表属性和内容、创建索引和视图,以及掌握数据库对象的命名方法和数据类型的选取。 首先,了解“方案”(Schema)的概念至关...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    总体而言,Oracle Database 11G初学者指南是一本全面的参考资料,适合想要学习Oracle数据库技术的初学者使用。书中不仅介绍了基本概念和技术,还提供了实践练习和测验,帮助读者巩固和检验学习成果。通过阅读本书,...

    oracle 详细讲解教程

    Oracle数据库的基本语法涵盖了查询基础、单行函数、分组函数、多表查询、子查询和高级查询等SQL语言的使用方法。在多表查询中,可以使用如JOIN等操作连接多个表进行数据的组合查询。单行函数与分组函数在数据处理时...

    基于ORACLE数据库的SQL性能优化.pdf

    总结来说,《基于ORACLE数据库的SQL性能优化》这篇文档为我们提供了Oracle数据库SQL性能优化的全面指导,从理论到实践,结合具体案例分析了数据库逻辑结构、物理存储结构优化、使用分区等策略,并进一步讲解了SQL...

    超详细Oracle教程.pdf

    4. 单行函数与分组函数:详细讲解了Oracle提供的各种函数,包括单行函数和分组函数的使用方法,如何对数据进行转换和聚合。 5. 多表查询:介绍了在Oracle中如何进行多表联结、子查询等复杂的查询操作,以及数据的...

    Oracle经典教程(入门到精通)

    在Oracle应用于.Net平台的章节中,探讨了如何使用***连接Oracle数据库,并介绍了抽象工厂模式在Oracle数据库应用中的实现方法。这部分内容是针对希望在.Net平台上使用Oracle数据库的开发者准备的,介绍了如何在.Net...

    Oracle教程

    3. 查询基础:涵盖了Oracle SQL语言的基本知识,包括数据查询语言DQL(Data Query Language),重点讲解SELECT语句的基本结构及其子句的使用方法。 4. 单行函数和分组函数:详细介绍了单行函数,如字符、数字和日期...

Global site tag (gtag.js) - Google Analytics