一、oracle版本
oracle 11.2.0.1.0 - 64bit
tool sqlplus
二、序列是啥
通過學習,了解到序列是oracle資料物件的一種,是以有序增加或者減少相同步長的一組序號,最主要的作用是用來生成資料表 的主鍵或者唯一鍵。序列不占用磁碟上的儲存空間,是存活在記憶體上的物件。
建立語法:
create sequence 序列名稱
increment by [num1]
start with [num2]
maxvalue [num3] | [nomaxvalue]
minvalue [num4] | [nominvalue]
nocycle | cycle
nocache | cache [num5]
[order];
三、關鍵字解釋:
1. increment by num1:步長為num1,num1可以是正數也可以是負數,但都必須是整數,預設為1,不可以是0(為0就失去了序列的意義)。
當num1為正數是序列值越來越大,為負數時越來越小。
2. start with [num2]:定義序列的初始值或起始值num2,這是序列的第乙個值,預設值是 1。
3. maxvalue [num3] | [nomaxvalue]:定義序列可以生成的最大值num3。不設定最大值,則預設為nomaxvalue, 遞增序列最大值據說是10的27次方;遞減序列的最大值是 -1。
4. minvalue [num4] | [nominvalue ]:定義序列可以生成的最小值num4。不設定最小值,則預設為nominvalue,遞增序列的最小值為1
5. nocycle | [cycle]:定義序列生成的值達到最大時是否迴圈,nocycle表示不迴圈,如果乙個序列需要很長時間才能用完,可以考慮使用迴圈序列。下乙個迴圈開始值,在user_sequences中的last_number欄位可以檢視。
6. nocache | [cache] [num5]:定義序列是否使用快取,及快取塊的大小,預設大小為20。連線斷開,快取清空(我猜的,哈哈)。
7. [order]:order選項,定義序列是否按順序發生,預設為no。在單例項資料庫中沒有區別,因為序列一定是按序發生的。在集群環境中,假如快取cache=20,例項1取了1-20,儲存到記憶體中;例項2再引用同一序列時,會取21-40...這樣在多例項中取到的序列值就會不同,order定義後集群的每個例項都要按照順序得到序列值。
四、建立示例:
create sequence s2
increment by 2 --步進 2
start with 1 --起始值 1
maxvalue 20 --最大值 20
minvalue -20 --最小值 -20
nocycle --不迴圈
nocache; --不進行快取
五、1. 獲取當前序列的值:
select s2.currval from dual;
select s2.nextval from dual;
3. 查詢使用者下有哪些序列:
select * from user_sequences;
六、序列建立後可以進行修改:
1. alter sequence s2 increment by -2; --修改為遞減序列
2. alter sequence s2 maxvalue 100; --修改最大值為100
3. alter sequence s2 cache 30; --修改為快取,快取塊大小為30,意為一次快取最多儲存30個序列值到記憶體中
七、知識點總結:
1. 序列是共享的呼叫,有引用許可權的使用者都可以引用它。
2. 當事務回滾時,事務中增刪改的資料可以回退,但序列不會回退!!!
3. 在乙個表中,序列遞增的字段值可能會中斷、不連續,原因是其它物件引用了這個序列,即使是dual虛擬表的引用。
4. nocache設定時,每次引用序列都需要計算,會消耗效能;cache時,只再快取時計算一次;如果想快速的生成序列值,請將cache值加大,實際應用場景,如訂單號。
5. 如果想用序列值作為主鍵,序列一定要定義為nocycle。
Oracle中如何建立使用SEQUENCES
oracle中sequences的使用 oracle提供了sequence物件,由系統提供自增長的序列號,通常用於生成資料庫資料記錄的自增長主鍵或序號的地方.下面介紹一下關於sequence 的生成,修改,刪除等常用的操作 1.建立 sequence 使用如下命令新建sequence 使用者需要有c...
Oracle建立自增長序列 SEQUENCE
oracle通過建立序列來實現自增張欄位。建立序列的語法 建立序列的語法 create sequence user sequence name increment by n start with n maxvalue n nomaxvalue minvalue n nominvalue 修改序列的語...
sql server建立序列sequence
1 建立乙個序列物件 1 create sequence schema name sequence name 2as built in integer type user defined integer type 3 start with 4increment by 5 6 7cycle 8 seq...