您的位置:首页 > 数据库 > Oracle

oracle中sequence序列的使用

2011-11-24 10:00 549 查看
序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主键值。

1)建立序列命令

CREATE SEQUENCE [user.]sequence_name

[increment by n]

[start with n]

[maxvalue n | nomaxvalue]

[minvalue n | nominvalue];

[NOCYCLE]  --
INCREMENT BY:指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。
START WITH:指定生成的第一个序列号。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。
MAXVALUE:指定序列可生成的最大值。
NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。
MINVALUE:指定序列的最小值。
NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。
NOCYCLE:一直累加,不循环

2)更改序列命令

ALTERSEQUENCE [user.]sequence_name

[INCREMENT BY n]

[MAXVALUE n| NOMAXVALUE ]

[MINVALUE n | NOMINVALUE];
修改序列可以:
  修改未来序列值的增量。
设置或撤消最小值或最大值。
改变缓冲序列的数目。
  指定序列号是否是有序。

注意:
1,第一次NEXTVAL返回的是初始值
2,可以alter除start至以外的所有sequence参数.如果想要改变start值,必须
drop sequence 再 re-create .

3)删除序列命令

DROP SEQUENCE [user.]sequence_name;
用于从数据库中删除一序列。

4)牛刀小试

    
4.1)创建一个序列号的语句:

-- Create sequence

create sequence NCME_QUESTION_SEQ

minvalue 1

maxvalue 999999999999

start with 1

increment by 1

nocache;

4.2)SQL中取序列号的用法:

SELECT NCME_QUESTION_SEQ.nextval FROM dual

SELECT NCME_QUESTION_SEQ.CURRVAL FROM dual

dual本身就是一个单词,并非是某个词组的缩写.名词意为对数,形容词为双重的意思.在Oracle中dual指dual table,一个单行单列的虚拟表.

1: DUAL table-- a special kind of one-row and one-column database table;

2:dual is a table which is created by oracle along with the data dictionary. It consists of exactly one column whose name is dummy and one record. The value of that record is X.

3:Note that the outer query references the dummy table called dual the dual table is used in Oracle when you need to run SQL that does not logically have a table name.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: