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