oracle学习****oracle对象之------序列
2012-05-04 10:42
253 查看
1、定义:
序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成
2、创建序列语法 (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限)
语法解析:
①
START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。
②
INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。
③
MAXVALUE:指最大值。
④
NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。
⑤
MINVALUE:指最小值。
⑥
NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。
⑦
CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。
⑧
NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。
⑨
CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。
NOCACHE:不预先在内存中生成序列号。
3、例子
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 —— 每次加几个
START WITH 1 ——从1开始计数
MAXVALUE ——最大值值
NOMAXVALUE ——不设置最大值
NOCYCLE——一直累加,不循环
CACHE 10;
4、
只要定义了emp_sequence,你就可以用使CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
5、可以使用sequence的地方:
。 不包含子查询、snapshot、VIEW的 SELECT 语句
。INSERT语句的子查询中
。NSERT语句的VALUES中
。UPDATE 的 SET中
需要注意的是:
第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就会是不一样的。
- 假如指定CACHE值,Oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,Oracle自动再取一组 到cache. 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失。 所以可以在create sequence的时候用nocache防止这种情况。
6、修改序列
语句:ALTER SEQUENCE sequence_name
MAXVALUE 10000
……
注意点:
使用ALTER SEQUENCE可以修改序列,在修改序列时有如下限制:
1. 不能修改序列的初始值。
2. 最小值不能大于当前值。
3. 最大值不能小于当前值。
7、删除语法
DROP SEQUENCE sequence_name;
序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成
2、创建序列语法 (注释:你需要有CREATE SEQUENCE或CREATE ANY SEQUENCE权限)
CREATE SEQUENCE sequence_name [START WITH num] [INCREMENT BY increment] [MAXVALUE num|NOMAXVALUE] [MINVALUE num|NOMINVALUE] [CYCLE|NOCYCLE] [CACHE num|NOCACHE] |
①
START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1。
②
INCREMENT BY:增长数。如果是正数则升序生成,如果是负数则降序生成。升序默认值是1,降序默认值是-1。
③
MAXVALUE:指最大值。
④
NOMAXVALUE:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。
⑤
MINVALUE:指最小值。
⑥
NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。
⑦
CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果是降序序列,达到最小值后,从最大值重新开始。
⑧
NOCYCLE:表示不重新开始,序列升序达到最大值、降序达到最小值后就报错。默认NOCYCLE。
⑨
CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。
NOCACHE:不预先在内存中生成序列号。
3、例子
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 —— 每次加几个
START WITH 1 ——从1开始计数
MAXVALUE ——最大值值
NOMAXVALUE ——不设置最大值
NOCYCLE——一直累加,不循环
CACHE 10;
4、
只要定义了emp_sequence,你就可以用使CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
5、可以使用sequence的地方:
。 不包含子查询、snapshot、VIEW的 SELECT 语句
。INSERT语句的子查询中
。NSERT语句的VALUES中
。UPDATE 的 SET中
需要注意的是:
第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次 SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就会是不一样的。
- 假如指定CACHE值,Oracle就可以预先在内存里面放置一些sequence,这样存取的快些。cache里面的取完后,Oracle自动再取一组 到cache. 使用cache或许会跳号, 比如数据库突然不正常down掉(shutdown abort),cache中的sequence就会丢失。 所以可以在create sequence的时候用nocache防止这种情况。
6、修改序列
语句:ALTER SEQUENCE sequence_name
MAXVALUE 10000
……
注意点:
使用ALTER SEQUENCE可以修改序列,在修改序列时有如下限制:
1. 不能修改序列的初始值。
2. 最小值不能大于当前值。
3. 最大值不能小于当前值。
7、删除语法
DROP SEQUENCE sequence_name;
相关文章推荐
- Oracle学习之常用对象(一)—表&视图&序列
- oracle 学习笔记(十二) oracle独有对象 序列sequence
- ORACLE PL/SQL 对象(object)学习笔记(二)
- Oracle学习之常用对象(四)—数据处理
- Oracle 学习:PL/SQL循序渐进全面学习教程--课程七 其他数据库对象
- Oracle基础 12 对象 objects 同义词/序列/试图/索引
- Oracle基础学习----DDL与数据库对象
- ORACLE PL/SQL 对象(object)学习笔记(三)
- [Oracle] 查询修改序列对象的当前值
- Oracle 数据库对象-序列
- oracle 序列-学习笔记
- Oracle其他数据对象 –- 序列
- oracle 数据库模式对象,索引,序列,同义词,查看用户拥有的表,聚簇,数据库链接
- oracle 数据库模式对象,索引,序列,同义词,查看用户拥有的表,聚簇,数据库链接
- oracle 数据库模式对象,索引,序列,同义词,查看用户拥有的表,聚簇,数据库链接
- Oracle学习 第19天 PL/SQL 导出表结构/数据、导出存储过程/函数/序列等
- oracle学习篇十:序列
- 6.4、视图、序列、同义词--Oracle模式对象
- UML学习(三):序列图(顺序图/对象顺序图)
- 【Oracle学习】之 序列(Sequence)