Oracle序列小结
生活随笔
收集整理的這篇文章主要介紹了
Oracle序列小结
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
- 定義:
- 特點:
- 創(chuàng)建序列:
1)INCREMENT BY用于定義序列的步長,如果省略,則默認為1,如果出現(xiàn)負值,則代表Oracle序列的值是按照此步長遞減的。
2)START WITH 定義序列的初始值(即產(chǎn)生的第一個值),默認為1。
3)MAXVALUE 定義序列生成器能產(chǎn)生的最大值。選項NOMAXVALUE是默認選項,代表沒有最大值定義,這時對于遞增Oracle序列,系統(tǒng)能夠產(chǎn)生的最大值是10的27次方;對于遞減序列,最大值是-1。
4)MINVALUE定義序列生成器能產(chǎn)生的最小值。選項NOMAXVALUE是默認選項,代表沒有最小值定義,這時對于遞減序列,系統(tǒng)能夠產(chǎn)生的最小值是?10的26次方;對于遞增序列,最小值是1。
5)CYCLE和NOCYCLE 表示當序列生成器的值達到限制值后是否循環(huán)。CYCLE代表循環(huán),NOCYCLE代表不循環(huán)。如果循環(huán),則當遞增序列達到最大值時,循環(huán)到最小值;最小值為1。對于遞減序列達到最小值時,循環(huán)到最大值。如果不循環(huán),達到限制值后,繼續(xù)產(chǎn)生新值就會發(fā)生錯誤。 6)CACHE(緩沖)定義存放序列的內(nèi)存塊的大小,默認為20。NOCACHE表示不對序列進行內(nèi)存緩沖。對序列進行內(nèi)存緩沖,可以改善序列的性能。 緩存選項會造成數(shù)據(jù)丟失,當實例異常關閉時。- 查看序列
SELECT * FROM USER_SEQUENCES;SELECT * FROM ALL_SEQUENCES;SELECT * FROM DBA_SEQUENCES; SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER FROM USER_SEQUENCES;
- 刪除序列
- 修改序列
- 使用序列
CURRVAL: 返回序列的當前值。
NEXTVAL: 序列遞增,返回下一值。
1:在DELETE、SELECT、UPDATE的子查詢中
2:在視圖或物化事物的查詢中。
3:SELECT查詢中使用了DISTINCT操作符。 4:SELECT查詢中有GROUP BY或ORDER B ?????調(diào)用NEXTVAL將生成序列中的下一個序列號,調(diào)用時要指出序列名,即用以下方式調(diào)用:?序列名.NEXTVAL CURRVAL用于產(chǎn)生序列的當前值,無論調(diào)用多少次都不會產(chǎn)生序列的下一個值。如果序列還沒有通過調(diào)用NEXTVAL產(chǎn)生過序列的下一個值,先引用CURRVAL沒有意義。調(diào)用CURRVAL的方法同上,要指出序列名,即用以下方式調(diào)用:序列名.CURRVAL ?????在編號的過程中,產(chǎn)生間隙的原因多種多樣。如果一個存儲過程從一個序列中挑選某個數(shù)字,定為本地變量,但是從來不用它,這個數(shù)字就丟失了。它將不能再返回到原序列中,結(jié)果就造成數(shù)值序列中存在一個間隙。另外,在回滾、系統(tǒng)異?;蛘叨鄠€表同時使用同一序列時也會產(chǎn)生裂縫(間隙)。 ? ? ?說明:第一次調(diào)用NEXTVAL產(chǎn)生序列的初始值,根據(jù)定義知道初始值為10。第二次調(diào)用產(chǎn)生11,因為序列的步長為1。調(diào)用CURRVAL,顯示當前值11,不產(chǎn)生新值。Oracle的解析函數(shù)為檢查間隙提供了一種要快捷得多的方法。它們使你在使用完整的、面向集合的SQL處理的同時,仍然能夠看到下一個行(LEAD)或者前一行(LAG)的數(shù)值。
- 示例:
產(chǎn)生序列的第一個值: SELECTTEST_LMB.NEXTVALFROMDUAL;
產(chǎn)生序列的下一個值: SELECTTEST_LMB.NEXTVALFROMDUAL;
產(chǎn)生序列的當前值: SELECTTEST_LMB.CURRVALFROMDUAL;
刪除序列:DROPSEQUENCETEST_LMB
總結(jié)
以上是生活随笔為你收集整理的Oracle序列小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle数据库表空间占用过大的解决办
- 下一篇: 【Spring学习】Spring Jdb