SQL语言之序列(Oracle)
序列(sequence)
?用戶創建的數據庫對象,序列會產生唯一的整數。序列的一個典型的用途是創建一個主鍵的值,它對于每一行必須是唯一的。序列有一個Oracle內部程序產生并增加或減少。
?一個節省時間的對象,它可以減少應用程序中產生序列程序的代碼量。序列號獨立于表被存儲和產生,因此相同的序列可以被多個表使用;
一、創建序列(一般在開發中除了名字以外其他都用默認值就可以了)
?通過ddl語句創建序列
在語法中
?sequence是序列發生器的名字INCREMENT BY n指定序列號之間的間隔,n是 一個整數(如果該子句被省略,序列增量為1);
?START WITH n指定要產生的一個序列數(如果該子句被省略,序列從1開始)
?MAXVALUE n指定序列能產生的最大值、NOMAXVALUE對于升序序列指定 10^27為 最大值,對于降序序列指定-1為最大值;(這是默認選項)
?MINVALUE n指定最小序列值,NOMINVALUE對于升序序列指定1為最小值, 對于降序序列指定-(10^26)為最小值;(這是默認選項)
?CYCLE|NOCYCLE指定序列在達到他的最大或最小值之后,是否循環(NOCYCLE是默認值)
?CACHE n|NOCACHE指定Oracle服務器預先分配多少值,并且保持在內存中(默 認情況下,Oracle服務器緩沖20個值)
例
創建一個序列名稱為:dept_seq,增長間隔為 10,從 120 開始,最大值為 9999, 不緩存。不循環使用。Create sequence dept_seq increment by 10 start with 120 maxvalue 9999 nocycle nocache;?通過pl/sql工具創建序列
例
創建一個序列名稱為:dept_seq2,增長間隔為 10,從 120 開始,最大值為 9999,不緩存。不循環使用。二、操作序列
?查詢序列
例
查詢hr用戶下的所有序列的序列名稱、最小值、最大值、增長量、下一個值; Select sequence_name , min_value , max_value , increment_by , last_number from user_sequences;?使用序列
Nextval和carrval偽列
1.Nextval返回下一個可用的序列值,它每次返回一個唯一的被引用值,及時對于不同的用戶也是如此;
2.Currval獲得當前的序列值;
3.在currval獲得一個值之前,nextval對該序列必須發布(在沒有使用過的序列的情況,在使用currval獲取當前值之前,必須先用nextval獲取一次否則會報錯);
例
在 location ID 2500 中插入一個新部門名稱 Support。Insert into departments values(text_seq.nextval , ‘Support’ ,null,2500);?修改與刪除序列
1.修改序列
2.修改序列的原則
?必須是被修改序列的所有者,或者有alter權限;
?用alter sequence語句,只有以后的序列數會受影響;
?用alter sequence語句,start with選項不能被改變,為了以不同的數從新開始一個序列,該序列必須被刪除或重新創建;
例
將 dept_seq 序列中的增長量修改 20,最大值修改為 999999。 Alter sequence dept_seq increment_by 20 , max_value 999999 , nocycle , nocache;3.刪除序列
例
刪除 dept_seq 序列; Drop sequence dept_seq;也可以右鍵指定的表點擊drop;總結
以上是生活随笔為你收集整理的SQL语言之序列(Oracle)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL语言之创建数据库其他对象(视图)
- 下一篇: SQL语言之索引(Oracle)