偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Oracle數(shù)據(jù)庫(kù)中序列(SEQUENCE)的用法詳解

數(shù)據(jù)庫(kù) Oracle
在Oracle數(shù)據(jù)庫(kù)中,序列的用途是生成表的主鍵值,可以在插入語(yǔ)句中引用,也可以通過(guò)查詢檢查當(dāng)前值,或使序列增至下一個(gè)值。本文我們主要介紹了序列的用法,希望能夠?qū)δ兴鶐椭?/div>

Oracle數(shù)據(jù)庫(kù)中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其實(shí)是序列號(hào)生成器,可以為表中的行自動(dòng)生成序列號(hào),產(chǎn)生一組等間隔的數(shù)值(類型為數(shù)字)。其主要的用途是生成表的主鍵值,可以在插入語(yǔ)句中引用,也可以通過(guò)查詢檢查當(dāng)前值,或使序列增至下一個(gè)值。

創(chuàng)建序列需要CREATE SEQUENCE系統(tǒng)權(quán)限。序列的創(chuàng)建語(yǔ)法如下:

CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [] [{CACHE n|NOCACHE}];

INCREMENT BY 用于定義序列的步長(zhǎng),如果省略,則默認(rèn)為1,如果出現(xiàn)負(fù)值,則代表序列的值是按照此步長(zhǎng)遞減的。

START WITH 定義序列的初始值(即產(chǎn)生的***個(gè)值),默認(rèn)為1。

MAXVALUE 定義序列生成器能產(chǎn)生的***值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒(méi)有***值定義,這時(shí)對(duì)于遞增序列,系統(tǒng)能夠產(chǎn)生的***值是10的27次方;對(duì)于遞減序列,***值是-1。

MINVALUE定義序列生成器能產(chǎn)生的最小值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒(méi)有最小值定義,這時(shí)對(duì)于遞減序列,系統(tǒng)能夠產(chǎn)生的最小值是?10的26次方;對(duì)于遞增序列,最小值是1。

CYCLE和NOCYCLE 表示當(dāng)序列生成器的值達(dá)到限制值后是否循環(huán)。CYCLE代表循環(huán),NOCYCLE代表不循環(huán)。如果循環(huán),則當(dāng)遞增序列達(dá)到***值時(shí),循環(huán)到最小值;對(duì)于遞減序列達(dá)到最小值時(shí),循環(huán)到***值。如果不循環(huán),達(dá)到限制值后,繼續(xù)產(chǎn)生新值就會(huì)發(fā)生錯(cuò)誤。

CACHE(緩沖)定義存放序列的內(nèi)存塊的大小,默認(rèn)為20。NOCACHE表示不對(duì)序列進(jìn)行內(nèi)存緩沖。對(duì)序列進(jìn)行內(nèi)存緩沖,可以改善序列的性能。

刪除序列的語(yǔ)法是:

DROP SEQUENCE 序列名;

其中:

刪除序列的人應(yīng)該是序列的創(chuàng)建者或擁有DROP ANY SEQUENCE系統(tǒng)權(quán)限的用戶。序列一旦刪除就不能被引用了。

序列的某些部分也可以在使用中進(jìn)行修改,但不能修改SATRT WITH選項(xiàng)。對(duì)序列的修改只影響隨后產(chǎn)生的序號(hào),已經(jīng)產(chǎn)生的序號(hào)不變。

修改序列的語(yǔ)法如下:

創(chuàng)建和刪除序列

例1:創(chuàng)建序列:

CREATE SEQUENCE ABC INCREMENT BY 1 START WITH 10 MAXVALUE 9999999 NOCYCLE NOCACHE;

執(zhí)行結(jié)果:

序列已創(chuàng)建。

步驟2:刪除序列:

DROP SEQUENCE ABC;

執(zhí)行結(jié)果:

序列已丟棄。

說(shuō)明:以上創(chuàng)建的序列名為ABC,是遞增序列,增量為1,初始值為10。該序列不循環(huán),不使用內(nèi)存。沒(méi)有定義最小值,默認(rèn)最小值為1,***值為9 999 999。

序列的使用

如果已經(jīng)創(chuàng)建了序列,怎樣才能引用序列呢?方法是使用CURRVAL和NEXTVAL來(lái)引用序列的值。

在編號(hào)的過(guò)程中,產(chǎn)生間隙的原因多種多樣。如果一個(gè)存儲(chǔ)過(guò)程從一個(gè)序列中挑選某個(gè)數(shù)字,定為本地變量,但是從來(lái)不用它,這個(gè)數(shù)字就丟失了。它將不能再返回到原序列中,結(jié)果就造成數(shù)值序列中存在一個(gè)間隙。關(guān)系型數(shù)據(jù)庫(kù)模型中不必?fù)?dān)心這一點(diǎn)。但是有時(shí)候人們?cè)谝膺@一點(diǎn),這些人想知道是哪些數(shù)字丟失了。

調(diào)用NEXTVAL將生成序列中的下一個(gè)序列號(hào),調(diào)用時(shí)要指出序列名,即用以下方式調(diào)用:

序列名.NEXTVAL

CURRVAL用于產(chǎn)生序列的當(dāng)前值,無(wú)論調(diào)用多少次都不會(huì)產(chǎn)生序列的下一個(gè)值。如果序列還沒(méi)有通過(guò)調(diào)用NEXTVAL產(chǎn)生過(guò)序列的下一個(gè)值,先引用CURRVAL沒(méi)有意義。調(diào)用CURRVAL的方法同上,要指出序列名,即用以下方式調(diào)用:

序列名.CURRVAL.

產(chǎn)生序列的值。

步驟1:產(chǎn)生序列的***個(gè)值:

SELECT ABC.NEXTVAL FROM DUAL;

執(zhí)行結(jié)果:

NEXTVAL ------------------ 10

步驟2:產(chǎn)生序列的下一個(gè)值:

SELECT ABC.NEXTVAL FROM DUAL;

執(zhí)行結(jié)果:

NEXTVAL ------------------- 11

產(chǎn)生序列的當(dāng)前值:

SELECT ABC.CURRVAL FROM DUAL;

執(zhí)行結(jié)果:

CURRVAL -------------------- 11

說(shuō)明:***次調(diào)用NEXTVAL產(chǎn)生序列的初始值,根據(jù)定義知道初始值為10。第二次調(diào)用產(chǎn)生11,因?yàn)樾蛄械牟介L(zhǎng)為1。調(diào)用CURRVAL,顯示當(dāng)前值11,不產(chǎn)生新值。Oracle的解析函數(shù)為檢查間隙提供了一種要快捷得多的方法。它們使你在使用完整的、面向集合的SQL處理的同時(shí),仍然能夠看到下一個(gè)行(LEAD)或者前一行(LAG)的數(shù)值。

關(guān)于Oracle數(shù)據(jù)庫(kù)序列的知識(shí)就介紹到這里了,希望本次的介紹能夠帶給您一些收獲,謝謝!

【編輯推薦】

  1. Oracle數(shù)據(jù)庫(kù)如何創(chuàng)建對(duì)象類型和對(duì)象類型表
  2. 虛擬機(jī)安裝Oracle錯(cuò)誤ORA-12514的解決方案
  3. Oracle數(shù)據(jù)庫(kù)如何創(chuàng)建DB Link操作遠(yuǎn)程數(shù)據(jù)庫(kù)
  4. Oracle提示“資源正忙,需指定nowait”的解決方案
  5. Oracle數(shù)據(jù)庫(kù)遠(yuǎn)程連接設(shè)置的四種方法及其注意事項(xiàng)
責(zé)任編輯:趙鵬 來(lái)源: 火魔網(wǎng)
相關(guān)推薦

2010-04-30 11:58:45

Oracle sequ

2011-05-19 13:25:14

Oracle數(shù)據(jù)庫(kù)

2009-05-13 10:28:30

OracleDUAL數(shù)據(jù)庫(kù)

2010-04-02 13:59:08

Oracle數(shù)據(jù)庫(kù)

2010-04-14 15:14:11

Oracle數(shù)據(jù)庫(kù)

2011-03-29 10:47:49

ORACLE數(shù)據(jù)庫(kù)

2011-04-11 13:19:41

Oracle數(shù)據(jù)庫(kù)

2009-10-27 16:36:07

Oracle如何解鎖

2011-05-17 15:02:15

ORACLE數(shù)據(jù)庫(kù)備份

2011-08-18 15:49:21

Oracle厲行計(jì)劃

2010-04-07 14:22:46

2011-08-18 17:05:16

Oracle數(shù)據(jù)庫(kù)的服

2011-08-11 16:55:34

Oracle數(shù)據(jù)庫(kù)AWR

2010-04-02 17:11:45

Oracle數(shù)據(jù)庫(kù)

2011-09-02 10:37:15

Oraclesqlload用法

2021-02-17 13:52:35

數(shù)據(jù)庫(kù)group byMySQL

2011-08-15 23:14:34

Oraclerman環(huán)境配置

2011-08-12 13:33:31

Oracle數(shù)據(jù)庫(kù)自治事務(wù)

2009-09-02 18:52:38

Oracle數(shù)據(jù)庫(kù)并行

2010-10-20 09:41:37

卸載Oracle
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)