什么是序列?在mysql中有一個主鍵自動增長的id,例如:uid number primary key auto_increment;在oracle中序列就是類似於主鍵自動增長,兩者功能是一樣的,只是叫法不同而已。
在oracle中想要實現id自動增長只能用序列來實現。在oracle中,是將序列裝入內存,可以提高訪問效率。
1.)序列的創建
create sequence 序列名稱
increment by n 每次增長多少 //系統默認值為1.
start with n從幾開始 //系統默認值為1.
[maxvalue n最大值|nomaxvalue] //NoMaxValue:是系統對序列設置的默認值. 即指定升序序列的最大值為10的27次方.降序序列的最大值為-1.
[minvalue n最小值|nominvalue] //同上
[cycle |nocycle 是否循環]
[cache n緩存的數量|nocache] //指定要保留在內存中整數的個數.默認緩存的格式為20個. 可以緩存的整數最少為2個. 可以緩存的整數個數最多為:Cell(maximum_num—minimum_num)/ABS(increment_num). 注:Cell(序列的最大上限值—最小下限值,)/ABS(每次自增的增量).
例如:create sequence person_pid_seq
increment by 1
start with 1
maxvalue 1000
nocycle
nocache;
可以直接創建,其他的選項全部是默認值。例如:create sequence person_pid_seq;
2.)序列的操作
序列創建完成之后,所有的自動增長就都是由我們自己操作了,那么如果操作呢?提供了兩種方式。
2.1 nextval:取得序列的下一個值
2.2 currval:取得當前序列的內容
注意:currval 需要再nextval調用之后才能使用
3.)序列的使用
insert into person values(person_pid_seq.nextval,'name,'adress');//一般是利用nextval,讓id保持一直遞增。
4.)序列的刪除
drop sequence person_pid_seq;
5.)序列的注意事項
由於序列是同auto_increment一樣的,所有它是不會回頭的,即使你刪掉了數據,它的id永遠不會回到以前,只會一直遞增,例如,你有十條數據,你刪了第十條,希望下一條的id從10開始,這是不可能的,除非你重新做。
詳情參考:https://blog.csdn.net/yongqingmiao/article/details/6753421