序列(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数据库环境的基本使用方法。查询基础是数据库操作的核心,涉及到基本的SELECT语句,是进行数据检索和分析的基础。单行函数和分组函数是进行数据处理的重要工具,单行函数用于处理单条...
根据提供的文件信息,我们可以从中提炼出Oracle数据库备份与恢复的...通过以上知识点的讲解,我们了解了Oracle数据库备份与恢复的基本流程、常见问题及其解决方法。这对于Oracle数据库管理员来说是非常重要的技能之一。
Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,它由甲骨文公司(Oracle Corporation)开发和提供。Oracle数据库以其高效、稳定和强大的功能在金融、电信、医疗等多个行业中广泛应用。以下是一份详细...
实例(Instance)是指一组Oracle数据库后台进程/线程以及它们使用的内存结构的集合,在1.3节中详细讲解了其构成。此外,数据库的内部结构在1.4节中得到了全面的覆盖,其中包括表、列及数据类型(1.4.1),约束条件...
- 讲解了Oracle数据库中的各种对象及其管理方式。 - 掌握这些对象的使用方法有助于优化数据库性能和数据管理效率。 #### 五、PL/SQL程序设计 - **PL/SQL简介** - PL/SQL(Procedural Language for SQL)是Oracle...
4. **数据库对象**:Oracle数据库中的对象包括表、视图、索引、存储过程、触发器、序列、同义词等。教程会解释每种对象的作用和创建方法,以及如何进行对象权限管理,确保数据的安全性。 5. **函数和操作符**:...
本篇将深入讲解如何创建一个JavaBean来连接Oracle数据库,并在JSP中使用它。 首先,让我们了解JavaBean的基本概念。JavaBean是一种符合特定规范的Java类,它可以被其他Java组件或应用程序(如JSP页面)用来存储和...
Oracle数据库教程是一套全面介绍Oracle数据库系统使用和管理的教材。内容涵盖了从基础概念到高级特性,从日常维护到系统架构设计的全方位知识点。以下为详细知识点: 1. 数据库基础:介绍了数据库的基本概念,包括...
Oracle数据库SQL培训主要聚焦在如何高效地编写和优化SQL语句,特别针对Oracle数据库系统。在高级查询方面,课程涵盖了几个关键概念和技术: 1. **上期数/上年数**:这是时间序列分析中的基本概念,用于比较当前时期...
本书通过一系列专题深入浅出地讲解了Oracle数据库的各种功能和操作技巧,从基础的安装配置到高级的数据库管理,涵盖了Oracle数据库的各个方面。下面将对文件中提到的几个关键知识点进行详细阐述: ### Oracle入门 ...
《ORACLE数据库应用》课程是针对信息管理与信息系统专业的一门选修课,旨在让学生掌握Oracle数据库的基础操作、体系结构及管理方法。课程共32学时,包括16学时的理论讲解、16学时的实验和上机实践。在学习这门课程后...
本章主要讲解如何有效地管理和操作数据库中的各种对象,包括创建和修改表、定义约束、查看表属性和内容、创建索引和视图,以及掌握数据库对象的命名方法和数据类型的选取。 首先,了解“方案”(Schema)的概念至关...
总体而言,Oracle Database 11G初学者指南是一本全面的参考资料,适合想要学习Oracle数据库技术的初学者使用。书中不仅介绍了基本概念和技术,还提供了实践练习和测验,帮助读者巩固和检验学习成果。通过阅读本书,...
Oracle数据库的基本语法涵盖了查询基础、单行函数、分组函数、多表查询、子查询和高级查询等SQL语言的使用方法。在多表查询中,可以使用如JOIN等操作连接多个表进行数据的组合查询。单行函数与分组函数在数据处理时...
- **数据库基础与Oracle入门**:讲解数据库的基本概念,Oracle数据库的特点及入门操作,适合初学者理解数据库架构和Oracle的工作原理。 - **查询基础与单行函数**:介绍SQL语言的使用,包括基本查询语句和单行函数的...
总结来说,《基于ORACLE数据库的SQL性能优化》这篇文档为我们提供了Oracle数据库SQL性能优化的全面指导,从理论到实践,结合具体案例分析了数据库逻辑结构、物理存储结构优化、使用分区等策略,并进一步讲解了SQL...
在Oracle应用于.Net平台的章节中,探讨了如何使用***连接Oracle数据库,并介绍了抽象工厂模式在Oracle数据库应用中的实现方法。这部分内容是针对希望在.Net平台上使用Oracle数据库的开发者准备的,介绍了如何在.Net...
3. 查询基础:涵盖了Oracle SQL语言的基本知识,包括数据查询语言DQL(Data Query Language),重点讲解SELECT语句的基本结构及其子句的使用方法。 4. 单行函数和分组函数:详细介绍了单行函数,如字符、数字和日期...