Oracle入门(十二G)之序列
由于它屬于可共享對象,所以允許多個用戶訪問。一般情況下,序列用于創建主鍵值。
序列號的存儲和生成與表無關。因此,同一序列可以用于多個表。
一、創建序列
create sequence 序列名?
[increment by n]? ? ? --指定序列號的間隔值,其中n 為整數
[start with n]? ? ? ? ? ? --指定要生成的第一個序列號(如果省略該語句,序列將從1 開始)
[{maxvalue n | nomaxvalue}]? ?--指定當序列達到其最大值或最小值后,是否繼續生成值?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NOMAXVALUE是默認選項,代表沒有最大值定義,這時對于遞增
????????????????????????????????????????????????????序列,系統能夠產生的最大值是10的27次方;對于遞減序列,最大值是-1。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? MINVALUE定義序列生成器能產生的最小值。選項NOMAXVALUE是
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 默認選項,代表沒有最小值定義,這時對于遞減序列,系統能夠產生
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 的最小值是?10的26次方;對于遞增序列,最小值是1。
[{minvalue n | nominvalue}]? ?
[{cycle | nocycle}]? ? ??---表示當序列生成器的值達到限制值后是否循環。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CYCLE代表循環,NOCYCLE代表不循環。如果循環,則當遞增序列達到最大值時,循環到最
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?小值;對于遞減序列達到最小值時,循環到最大值。如果不循環,達到限制值后,繼續產生新值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?就會發生錯誤。
[{cache n | nocache}];? ???--指定Oracle 服務器預先分配并保留在內存中的值的個數。(默認20)如果系統崩潰,這些值將丟失。
實例:
create sequence user_seq
increment by 1
start with 1
maxvalue 50000
nocache
nocycle;
二、查詢序列
(1)要驗證序列已創建,請查詢user_sequences數據字典。要查看序列的所有設置,請按如下所示方式查詢USER_SEQUENCES 數據字典。
select sequence_name, min_value, max_value, increment_by, last_number? from user_sequences;
(2)查看當前用戶的所有序列?
select?sequence_owner,sequence_name?from dba_sequences? where sequence_owner='PPNIE';
注意:sequence_owner的值必須為大寫,不管你的用戶名是否大寫。只有大寫才能識別。
(3)查詢當前用戶的序列總數?select count(*) from dba_sequences where sequence_owner='用戶名';
(4)生成刪除該用戶下的序列號的sql語句
select 'drop sequence ' ||sequence_name ||' ;' from dba_sequences where sequence_owner='PPNIE';?
三、nextval和currval使用
nextval 偽列用于從指定序列中提取連續的序列號。必須用序列名來限定nextval。
在引用“序列名.nextval”時,會生成新的序列號,并將當前的序列號放置在currval 中。
?insert into t_user(uiid,uname) values(user_seq.nextval,'系統管理員');
可以在下列上下文中使用nextval 和currval:
- 不屬于子查詢的select 語句的select 列表
- insert 語句中子查詢的select 列表
- insert 語句的values 子句
- update 語句的set 子句
四、修改序列
?alter sequence 序列名?
[increment by n]?
[{maxvalue n | nomaxvalue}]?
? ? ? ?[{minvalue n | nominvalue}]??
[{cycle|nocycle}]?
[{cache n|nocache}];
注意:不能修改序列的初始值
alter sequence seq_empid increment by 2;注: Oracle修改序列(Sequence)起始值的方法五、刪除序列
drop sequence 序列名;drop sequence seq_empid
總結
以上是生活随笔為你收集整理的Oracle入门(十二G)之序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle入门(十三A1)之替换变量,
- 下一篇: Oracle入门(十二J)之同义词