在oracle中,序列是用于產(chǎn)生一系列唯一數(shù)字的數(shù)據(jù)庫(kù)對(duì)象;序列也就是一個(gè)序列號(hào)生成器,可以為表中的行自動(dòng)生成序列號(hào),主要的用途是生成主鍵的值,并且定義序列的用戶必須具有CREATE SEQUENCE權(quán)限。
本教程操作環(huán)境:Windows10系統(tǒng)、Oracle 11g版、Dell G3電腦。
什么是oracle序列
序列: Sequence 是oracle提供的用于產(chǎn)生一系列唯一數(shù)字的數(shù)據(jù)庫(kù)對(duì)象。由于oracle中沒(méi)有設(shè)置自增列的方法,所以我們?cè)趏racle數(shù)據(jù)庫(kù)中主要用序列來(lái)實(shí)現(xiàn)主鍵自增的功能。
在Oracle數(shù)據(jù)庫(kù)中,序列(sequence)其實(shí)就是一個(gè)序列號(hào)生成器,它可以為表中的行自動(dòng)生成序列號(hào),主要的用途是生成表的主鍵值。相當(dāng)于SQL Server和MySQL中的自增字段。
在SQL Server中可以在定義主鍵時(shí)使用identity關(guān)鍵字定義,在MySQL中可以在定義主鍵時(shí)使用increment關(guān)鍵字定義。在Oracle數(shù)據(jù)庫(kù)中要想使用自增字段,必須先定義一個(gè)序列(sequence)對(duì)象,然后在插入數(shù)據(jù)時(shí)使用【序列對(duì)象名.nextval】在主鍵中插入自增數(shù)據(jù)。
要定義序列,則定義序列的用戶必須具有CREATE SEQUENCE權(quán)限。在Oracle數(shù)據(jù)庫(kù)中,定義序列的語(yǔ)法如下:
CREATE SEQUENCE 序列名 [START WITH n] [INCREMENT BY n] [MAXVALUE n|NOMAXVALUE] [MINVALUE n|NOMINVALUE] [CACHE n|NOCACHE] [CYCLE|NOCYCLE]
參數(shù)說(shuō)明:
(1)INCREMENT BY:定義序列的步長(zhǎng),n如果為正值,表示序列是一個(gè)遞增序列;n如果為負(fù)值,表示序列是一個(gè)遞減序列;如果省略,則默認(rèn)值為1。
(2)START WITH:定義序列的起始值,如果省略,則默認(rèn)值為1。
(3)MAXVALUE:定義序列生成器能產(chǎn)生的最大值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒(méi)有最大值定義,這時(shí)對(duì)于遞增序列,系統(tǒng)能夠產(chǎn)生的最大值是10的27次方;對(duì)于遞減序列,最大值是-1。
(4)MINVALUE:定義序列生成器能產(chǎn)生的最小值。選項(xiàng)NOMAXVALUE是默認(rèn)選項(xiàng),代表沒(méi)有最小值定義,這時(shí)對(duì)于遞減序列,系統(tǒng)能夠產(chǎn)生的最小值是-10的26次方;對(duì)于遞增序列,最小值是1。
(5)CYCLE|NOCYCLE:表示當(dāng)序列生成器的值達(dá)到限制值后是否循環(huán)。CYCLE代表循環(huán),NOCYCLE代表不循環(huán)。
(6)CACHE:定義存放序列的內(nèi)存塊的大小,默認(rèn)為20。NOCACHE表示不對(duì)序列進(jìn)行內(nèi)存緩沖。
示例如下:
擴(kuò)展知識(shí):
修改序列
格式:
ALTER SEQUENCE name [INCREMENT BY n] [MINVALUE n | NO MINVALUE] [MAXVALUE n | NO MAXVALUE ] [MINVALUE n | NO MINVALUE ] [CACHE n ] [CYCLE | NO CYCLE]
示例如下:
推薦教程:《Oracle視頻教程》