Oracle中序列的一些常用操作

2021-12-29 22:32:51 字數 1920 閱讀 3890

oracle中序列的一些常用操作

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。  

create sequence 

你首先要有create sequence或者create any sequence許可權, 

create sequence emp_sequence 

increment by 1 -- 每次加幾個 

start with 1 -- 從1開始計數 

nomaxvalue -- 不設定最大值 

nocycle -- 一直累加,達到最大值後不迴圈

nocache; 一般設定為沒有快取,否則會出現跳號的情況

建立oracle序列的語法格式為:

create sequence 序列名

[increment by n]

[start with n]

; 1)increment by用於定義序列的步長,如果省略,則預設為1,如果出現負值,則代表oracle序列的值是按照此步長遞減的。

2)start with 定義序列的初始值(即產生的第乙個值),預設為1。

3)maxvalue 定義序列生成器能產生的最大值。選項nomaxvalue是預設選項,代表沒有最大值定義,這時對於遞增oracle序列,系統能夠產生的最大值是10的27次方;對於遞減序列,最大值是-1。

4)minvalue定義序列生成器能產生的最小值。選項nomaxvalue是預設選項,代表沒有最小值定義,這時對於遞減序列,系統能夠產生的最小值是?10的26次方;對於遞增序列,最小值是1。

5)cycle和nocycle 表示當序列生成器的值達到限制值後是否迴圈。cycle代表迴圈,nocycle代表不迴圈。如果迴圈,則當遞增序列達到最大值時,迴圈到最小值;對於遞減序列達到最小值時,迴圈到最大值。如果不迴圈,達到限制值後,繼續產生新值就會發生錯誤。

6)cache(緩衝)定義存放序列的記憶體塊的大小,預設為20。nocache表示不對序列進行記憶體緩衝。對序列進行記憶體緩衝,可以改善序列的效能。

一旦定義了emp_sequence,你就可以用currval,nextval 

currval=返回 sequence的當前值 

nextval=增加sequence的值,然後返回 sequence 值 

比如: 

emp_sequence.currval 

emp_sequence.nextval 

可以使用sequence的地方: 

- 不包含子查詢、snapshot、view的 select 語句 

- insert語句的子查詢中 

- nsert語句的values中 

- update 的 set中 

alter sequence 

你或者是該sequence的owner,或者有alter any sequence 許可權才能改動sequence. 可以alter除start至以外的所有sequence引數.如果想要改變start值,必須 drop sequence 再 re-create . 

alter sequence 的例子 

alter sequence emp_sequence 

increment by 10 

maxvalue 10000 

cycle -- 到10000後從頭開始 

nocache ; 

- 如果指定cache值,oracle就可以預先在記憶體裡面放置一些sequence,這樣訪問的快些。cache裡面的取完後,oracle自動再取一組到cache。 使用cache或許會跳號, 比如資料庫突然不正常down掉(shutdown abort),cache中的sequence就會丟失. 所以可以在create sequence的時候用nocache防止這種情況

可以很簡單的drop sequence 

drop sequence order_seq

vim外掛程式ZenCoding一些常用的操作

相當的酷,記錄一些常用的操作 接下來介紹些使用方法 copy自lazyhack的使用zen coding for vim快速編寫html 輸入div p foo 3 a這樣的縮寫,然後按ctrl y 來展開 注意那個逗號 展開後它應該是這個樣子的 輸入如下 test1 test2 test3 然後進...

vim外掛程式ZenCoding一些常用的操作

相當的酷,記錄一些常用的操作 接下來介紹些使用方法 copy自lazyhack的使用zen coding for vim快速編寫html 輸入div p foo 3 a這樣的縮寫,然後按ctrl y 來展開 注意那個逗號 展開後它應該是這個樣子的 輸入如下 test1 test2 test3 然後進...

oracle 一些常用的函式

select from emp where empno 7839 select sal from emp where empno 7839 字元函式 select length sal from emp select lower ename from emp select upper ename f...