一、序列sequence
sequence是Oracle数据库中一种特殊的对象,能够产生连续的整数值,可以为数据库中多个对象共同使用,主要用于作为主键值。
1.创建序列
起始值 start with:1
步长:increment by:1
最大值:maxvalue:100
最小值:minvalue:1
循环:cycle|nocycle
缓冲区:cache 20|nocache(默认20)
create sequence s1;
注: a) 各可选项位置不先后次序
b) 当increment by n为正数时,
默认maxvalue为: 1E+27 , 默认minvalue为: 1
当increment by n为负数时,
默认maxvalue为: -1 , 默认minvalue为: -1E+26
increment by必须为非零整数,
加不加NOMAXVALUE效果一样,这本身是默认值
c) CACHE n可以每次预产生十五个,二十个,放到内存里,提高性能。
不写默认CACHE 20个
d) cycle用于循环,到了最大数后循环(不建议使用)
2.使用序列
nextval:取序列下一个值
currval:去序列当前值
select s1.nextval from dual;
select s1.currval from dual;
create sequence s2
start with 100
increment by 2;
select s2.nextval from dual;
select s2.currval from dual;
注:先执行nextval才会启用,启用后才能查询到当前值
//序列和表的关系
insert into s_stu(id,name)
values(s2.nextval,'rui');
3.修改序列
ALTER SEQUENCE sequence
[INCREMENT BY n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}]
注: sequence不能修改起始值
alter sequence s_stu_id
increment by -2;
4.删除序列
drop sequence sequenceName