序列是一資料庫物件,利用它可產生唯一的整數。一般使用序列自動地產生主索引值。
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.