自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

數(shù)據(jù)庫 Oracle
在Oracle數(shù)據(jù)庫中,序列的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當前值,或使序列增至下一個值。本文我們主要介紹了序列的用法,希望能夠對您有所幫助。

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

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

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

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

START WITH 定義序列的初始值(即產生的***個值),默認為1。

MAXVALUE 定義序列生成器能產生的***值。選項NOMAXVALUE是默認選項,代表沒有***值定義,這時對于遞增序列,系統(tǒng)能夠產生的***值是10的27次方;對于遞減序列,***值是-1。

MINVALUE定義序列生成器能產生的最小值。選項NOMAXVALUE是默認選項,代表沒有最小值定義,這時對于遞減序列,系統(tǒng)能夠產生的最小值是?10的26次方;對于遞增序列,最小值是1。

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

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

刪除序列的語法是:

DROP SEQUENCE 序列名;

其中:

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

序列的某些部分也可以在使用中進行修改,但不能修改SATRT WITH選項。對序列的修改只影響隨后產生的序號,已經產生的序號不變。

修改序列的語法如下:

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

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

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

執(zhí)行結果:

序列已創(chuàng)建。

步驟2:刪除序列:

DROP SEQUENCE ABC;

執(zhí)行結果:

序列已丟棄。

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

序列的使用

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

在編號的過程中,產生間隙的原因多種多樣。如果一個存儲過程從一個序列中挑選某個數(shù)字,定為本地變量,但是從來不用它,這個數(shù)字就丟失了。它將不能再返回到原序列中,結果就造成數(shù)值序列中存在一個間隙。關系型數(shù)據(jù)庫模型中不必擔心這一點。但是有時候人們在意這一點,這些人想知道是哪些數(shù)字丟失了。

調用NEXTVAL將生成序列中的下一個序列號,調用時要指出序列名,即用以下方式調用:

序列名.NEXTVAL

CURRVAL用于產生序列的當前值,無論調用多少次都不會產生序列的下一個值。如果序列還沒有通過調用NEXTVAL產生過序列的下一個值,先引用CURRVAL沒有意義。調用CURRVAL的方法同上,要指出序列名,即用以下方式調用:

序列名.CURRVAL.

產生序列的值。

步驟1:產生序列的***個值:

SELECT ABC.NEXTVAL FROM DUAL;

執(zhí)行結果:

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

步驟2:產生序列的下一個值:

SELECT ABC.NEXTVAL FROM DUAL;

執(zhí)行結果:

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

產生序列的當前值:

SELECT ABC.CURRVAL FROM DUAL;

執(zhí)行結果:

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

說明:***次調用NEXTVAL產生序列的初始值,根據(jù)定義知道初始值為10。第二次調用產生11,因為序列的步長為1。調用CURRVAL,顯示當前值11,不產生新值。Oracle的解析函數(shù)為檢查間隙提供了一種要快捷得多的方法。它們使你在使用完整的、面向集合的SQL處理的同時,仍然能夠看到下一個行(LEAD)或者前一行(LAG)的數(shù)值。

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

【編輯推薦】

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

2010-04-30 11:58:45

Oracle sequ

2011-05-19 13:25:14

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

2009-05-13 10:28:30

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

2010-04-02 13:59:08

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

2010-04-14 15:14:11

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

2011-03-29 10:47:49

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

2009-10-27 16:36:07

Oracle如何解鎖

2011-05-17 15:02:15

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

2011-08-18 15:49:21

Oracle厲行計劃

2011-04-11 13:19:41

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

2010-04-02 17:11:45

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

2010-04-07 14:22:46

2011-08-11 16:55:34

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

2011-08-18 17:05:16

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

2011-09-02 10:37:15

Oraclesqlload用法

2021-02-17 13:52:35

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

2009-09-02 18:52:38

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

2010-04-09 16:51:24

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

2010-10-20 09:41:37

卸載Oracle

2009-02-09 12:52:32

文件加密Oracle數(shù)據(jù)庫
點贊
收藏

51CTO技術棧公眾號