序列
序列(Sequence)是用來(lái)生成連續(xù)的整數(shù)數(shù)據(jù)的對(duì)象。序列常常用來(lái)作為主鍵中增長(zhǎng)列,
序列中的可以升序生成,也可以降序生成。創(chuàng)建序列的語(yǔ)法是:
語(yǔ)法結(jié)構(gòu):創(chuàng)建序列
CREATE SEQUENCE sequence_name
[START WITH num]
[INCREMENT BY increment]
[MAXVALUE num|NOMAXVALUE]
[MINVALUE num|NOMINVALUE]
[CYCLE|NOCYCLE]
[CACHE num|NOCACHE]
語(yǔ)法解析:
① START WITH:從某一個(gè)整數(shù)開(kāi)始,升序默認(rèn)值是 1,降序默認(rèn)值是-1。
② INCREMENT BY:增長(zhǎng)數(shù)。如果是正數(shù)則升序生成,如果是負(fù)數(shù)則降序生成。升序默
認(rèn)值是 1,降序默認(rèn)值是-1。
③ MAXVALUE:指最大值。
④ NOMAXVALUE:這是最大值的默認(rèn)選項(xiàng),升序的最大值是: 1027,降序默認(rèn)值是-1。
⑤ MINVALUE:指最小值。
⑥ NOMINVALUE:這是默認(rèn)值選項(xiàng),升序默認(rèn)值是 1,降序默認(rèn)值是-1026。
⑦ CYCLE:表示如果升序達(dá)到最大值后,從最小值重新開(kāi)始;如果是降序序列,達(dá)到最
小值后,從最大值重新開(kāi)始。
⑧ NOCYCLE:表示不重新開(kāi)始,序列升序達(dá)到最大值、降序達(dá)到最小值后就報(bào)錯(cuò)。默
認(rèn) NOCYCLE。
⑨ CACHE:使用 CACHE 選項(xiàng)時(shí),該序列會(huì)根據(jù)序列規(guī)則預(yù)生成一組序列號(hào)。保留在內(nèi)
存中,當(dāng)使用下一個(gè)序列號(hào)時(shí),可以更快的響應(yīng)。當(dāng)內(nèi)存中的序列號(hào)用完時(shí),系統(tǒng)
再生成一組新的序列號(hào),并保存在緩存中,這樣可以提高生成序列號(hào)的效率。 Oracle
默認(rèn)會(huì)生產(chǎn) 20 個(gè)序列號(hào)。
⑩ NOCACHE:不預(yù)先在內(nèi)存中生成序列號(hào)
創(chuàng)建一個(gè)從 1 開(kāi)始,默認(rèn)最大值,每次增長(zhǎng) 1 的序列,要求 NOCYCLE,緩存中
有 30 個(gè)預(yù)先分配好的序列號(hào)
CREATE SEQUENCE MYSEQ
MINVALUE 1
START WITH 1
NOMAXVALUE
INCREMENT BY 1
NOCYCLE
CACHE 30
create table stu(
sid number primary key,
sname varchar2(20)
)
insert into stu values(MYSEQ.NEXTVAL,'小明');
insert into stu values(MYSEQ.NEXTVAL,'小張');
序列創(chuàng)建之后,可以通過(guò)序列對(duì)象的 CURRVAL 和 NEXTVAL 兩個(gè)“偽列”分別訪問(wèn)該序
列的當(dāng)前值和下一個(gè)值
SELECT MYSEQ.NEXTVAL FROM DUAL;
SELECT MYSEQ.CURRVAL FROM DUAL;
操作實(shí)例:
--新建一個(gè)序列
drop sequence Sequence_Student_sid
--創(chuàng)建一個(gè)序列
create sequence Sequence_Student_sid
start with 1000 --起始值是1000
increment by 10 --每次增量1
maxvalue 9999 --最大增量9999
--新建一個(gè)表
drop table stu09
create table stu09(
sid number,
sname varchar2(100)
)
--通過(guò)使用序列的NEXTVAL方法,進(jìn)行自動(dòng)增加
insert into stu09 values(Sequence_Student_sid.NEXTVAL,'蕭瑾')
insert into stu09 values(Sequence_Student_sid.nextval,'小張')
select *
from stu09
運(yùn)行截圖
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- 分享ORACLE SEQUENCE跳號(hào)總結(jié)
- 詳解ORACLE SEQUENCE用法
- Oracle中使用觸發(fā)器(trigger)和序列(sequence)模擬實(shí)現(xiàn)自增列實(shí)例
- sqlserver實(shí)現(xiàn)oracle的sequence方法
- Oracle創(chuàng)建自增字段--ORACLE SEQUENCE的簡(jiǎn)單使用介紹
- oracle sequence語(yǔ)句重置方介紹
- Hibernate Oracle sequence的使用技巧