Oracle中的序列 sequence 用法
生活随笔
收集整理的這篇文章主要介紹了
Oracle中的序列 sequence 用法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
sybase 同埋sqlserver 系冇序列呢樣野的。
但系oralce有。
oralce 序列簡單d來講類似于sybase的遞增列的機制, 但是sybase 一張表只允許1個遞增列, 而oracle沒有這個限制,可以分別為一張表的若干個列指定不同的序列。
而且同1個序列可以由各個用戶用在不同的表~
創(chuàng)建序列語法:
CREATE SEQUENCE sequence_name
?????????????? [INCREMENT BY n]????????? ? ? ? ? ? ? ? ? ? ?? --遞增的間隔,如果該句省略,默認是+1 ??
?????????????? [START WITH n]???????????????????????????????? --起始的值,如果該句省略,默認是1
?????????????? [{MAXVALUE n | NOMAXVALUE}]????????? --最大值,極限是10的27次方
?????????????? [{MINVALUE n | NOMINVALUE}]??????????? --最小值,極限是-10的26次方
?????????????? [{CYCLE | NOCYCLE}]???????????????????????? --到達最大或最小值后是否循環(huán),默認是不循環(huán)
?????????????? [{CACHE n | NOCACHE}];????????????????????????? --指定 Oracle 服務(wù)器預(yù)先分配多少值,并且保持在內(nèi)存中(默認
??????????????????????????????????????????????????????????????????????????????????????????? 情況下,Oracle 服務(wù)器緩沖 20 個值,如果序列值被高速緩沖,如果系統(tǒng)故障它們將被丟失.
例如創(chuàng)建1個列, 用于表Dep_1 的主鍵。
跟住可以用下滿語句來查看這個序列的屬性。
select * from user_sequences where lower(sequence_name) = 'dep_1_id_sq'?
上圖last_number 表示下1個可用序列號。
用這條語句來獲得當前序列號碼:
select dep_1_id_sq.currval from dual;
用這條語句來獲得當前下一個號碼:
select dep_1_id_sq.nextval from dual;
注:dep_1_id_sq.nextval 每被引用1次,例如上面的語句執(zhí)行1此,序列號+1,也就是說上面語句每次返回的結(jié)果都比上一次加1。
使用序列:
如我要插入1條新數(shù)據(jù)到表dep_1,? 可以用序列獲得1個未被使用過的新key值。
insert into dep_1
select dep_1_id_sq.nextval,'ma',null from dual;
然后可以用
select dep_1_id_sq.currval from dual;
來或得這條數(shù)據(jù)的key值.
但系oralce有。
oralce 序列簡單d來講類似于sybase的遞增列的機制, 但是sybase 一張表只允許1個遞增列, 而oracle沒有這個限制,可以分別為一張表的若干個列指定不同的序列。
而且同1個序列可以由各個用戶用在不同的表~
創(chuàng)建序列語法:
CREATE SEQUENCE sequence_name
?????????????? [INCREMENT BY n]????????? ? ? ? ? ? ? ? ? ? ?? --遞增的間隔,如果該句省略,默認是+1 ??
?????????????? [START WITH n]???????????????????????????????? --起始的值,如果該句省略,默認是1
?????????????? [{MAXVALUE n | NOMAXVALUE}]????????? --最大值,極限是10的27次方
?????????????? [{MINVALUE n | NOMINVALUE}]??????????? --最小值,極限是-10的26次方
?????????????? [{CYCLE | NOCYCLE}]???????????????????????? --到達最大或最小值后是否循環(huán),默認是不循環(huán)
?????????????? [{CACHE n | NOCACHE}];????????????????????????? --指定 Oracle 服務(wù)器預(yù)先分配多少值,并且保持在內(nèi)存中(默認
??????????????????????????????????????????????????????????????????????????????????????????? 情況下,Oracle 服務(wù)器緩沖 20 個值,如果序列值被高速緩沖,如果系統(tǒng)故障它們將被丟失.
例如創(chuàng)建1個列, 用于表Dep_1 的主鍵。
Create sequence Dep_1_id_sq
????????????????? increment by 1
????????????????? start with 100
????????????????? maxvalue 9999
跟住可以用下滿語句來查看這個序列的屬性。
select * from user_sequences where lower(sequence_name) = 'dep_1_id_sq'?
上圖last_number 表示下1個可用序列號。
用這條語句來獲得當前序列號碼:
select dep_1_id_sq.currval from dual;
用這條語句來獲得當前下一個號碼:
select dep_1_id_sq.nextval from dual;
注:dep_1_id_sq.nextval 每被引用1次,例如上面的語句執(zhí)行1此,序列號+1,也就是說上面語句每次返回的結(jié)果都比上一次加1。
使用序列:
如我要插入1條新數(shù)據(jù)到表dep_1,? 可以用序列獲得1個未被使用過的新key值。
insert into dep_1
select dep_1_id_sq.nextval,'ma',null from dual;
然后可以用
select dep_1_id_sq.currval from dual;
來或得這條數(shù)據(jù)的key值.
總結(jié)
以上是生活随笔為你收集整理的Oracle中的序列 sequence 用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracel 修改约束命令
- 下一篇: Oracle数据类型及存储方式——字符类