oracle 序列的使用
序列: 是oacle提供的用于產(chǎn)生一系列唯一數(shù)字的數(shù)據(jù)庫對象。
???????? 自動提供自增的唯一的數(shù)值。
???????? 共享的數(shù)據(jù)
???????? 主要用于提供主鍵值
?????????將序列裝入內(nèi)存可以提高訪問效率
1.創(chuàng)建序列:
????????????1、? 要有創(chuàng)建序列的權(quán)限 create sequence 或 create any sequence
????????????2、? 創(chuàng)建序列的語法:
????????????????????create sequence?sequence???//創(chuàng)建序列名稱????????????????????????????????????????????????????? ?create sequence seq_stu??
??????????????????? increment by??n????????????????? //遞增的序列值是n,??????????????????????????????????????????????????increment by 1
????????????????????[START WITH n]??? //開始的值,遞增默認(rèn)是minvalue 遞減是maxvalue
???????????????????[{MAXVALUE n | NOMAXVALUE}] //最大值
????????????????????[{MINVALUE n | NOMINVALUE}] //最小值
??????????????????? [{CYCLE | NOCYCLE}] //循環(huán)/不循環(huán)
????????????????????[{CACHE n | NOCACHE}];//分配并存入到內(nèi)存中
????????????? NEXTVAL 返回序列中下一個有效的值,任何用戶都可以引用
? CURRVAL 中存放序列的當(dāng)前值
? NEXTVAL 應(yīng)在 CURRVAL 之前指定 ,二者應(yīng)同時有效
?
Create sequence seqEmp increment by 1 start with 1 maxvalue 3 minvalue 1
Cycle cache 2;
//先nextval 后 currval
Select seqEmp.nextval ?from dual;?
Select seqEmp.currval ?from dual;
Cache<max-min/increment
?
//解釋
{
Create 創(chuàng)建
Sequence 序列 seqEmop 序列名稱
Increment by 步長
Stat with 1 開始值
Maxvalue? 最大值
Minvalue? 最小值
?
Cycle 循環(huán) nocycle 不循環(huán)
Cache 緩存?? Cache<maxvalue-minvalue/increment by//一般不采用緩存
Nextvalue 下一個
Currval 當(dāng)前值
?
}
//實(shí)例應(yīng)用
//實(shí)現(xiàn)id的自動遞增
//第一步
create table cdpt(
id number(6),
name varchar2(30),
constraint pk_id primary key(id)
);
?
Create sequence seq_cdpt
Increment by 1
Start with 1
Maxvalue 999999
Minvalue 1
Nocycle
nocache
?
insert into cdpt values(seq_cdpt.nextval,’feffefe’);
commit;
select * from cdpt;
/使用序列
會產(chǎn)生裂縫
l?? 序列在下列情況下出現(xiàn)裂縫:
?? 回滾
?? 系統(tǒng)異常
>多個表同時使用同一序列
//修改序列的增量, 最大值, 最小值, 循環(huán)選項(xiàng), 或是否裝入內(nèi)存
alter SEQUENCE sequence ?//創(chuàng)建序列名稱
?????? [INCREMENT BY n]? //遞增的序列值是n 如果n是正數(shù)就遞增,如果是負(fù)數(shù)就遞減 默認(rèn)是1
?????? [START WITH n]??? //開始的值,遞增默認(rèn)是minvalue 遞減是maxvalue
?????? [{MAXVALUE n | NOMAXVALUE}] //最大值
?????? [{MINVALUE n | NOMINVALUE}] //最小值
?????? [{CYCLE | NOCYCLE}] //循環(huán)/不循環(huán)
?????? [{CACHE n | NOCACHE}];//分配并存入到內(nèi)存中
修改序列的注意事項(xiàng):
l?? 必須是序列的擁有者或?qū)π蛄杏?ALTER 權(quán)限
l?? 只有將來的序列值會被改變
l?? 改變序列的初始值只能通過刪除序列之后重建序列的方法實(shí)現(xiàn)
刪除序列
l?? 使用DROP SEQUENCE 語句刪除序列
l?? 刪除之后,序列不能再次被引用
Alter sequence seqEmp maxvalue 5;
Select seqEmp.nextval from dual;
?
?
?
我的例子:
Create sequence seq_stu
Increment by 1
Start with 1
Maxvalue 999999
Minvalue 1
Nocycle
nocache
insert into STUDENTS (stu_id,name,age,grade)VALUES(seq_stu.nextval,'shali','14','1')
??????????????????
轉(zhuǎn)載于:https://www.cnblogs.com/lovefan/p/3388400.html
總結(jié)
以上是生活随笔為你收集整理的oracle 序列的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌雇程序员提升开源安全
- 下一篇: 广东发展银行系统分析师面试问题