Oracle序列化

版权声明:该博客由石头猿在学习过程中自行总结的原创,博客中代码仅供参考,禁止使用非法途径! https://blog.csdn.net/qq_35981996/article/details/85809285

一.概念

     序列是用来生成唯一,连续的整数的数据库对象,在Oracle中没有identity约束,通常就使用序列来自动生成主键或唯一键的值.序列可以按升序排列,也可以按降序排列.

二.常用用法 

1.创建序列语法:
Create sequence 序列名
[start with integer]
[increment by integer]
[maxvalue integer| nomaxvalue]
[minvalue integer| nominvalue]
[cycle | nocycle]
[cache integer | nocache];

注:
start with:    指定生成第一个序列号,对于升序列,其默认值为序列最小值;对于降序序列,其默认值为序列的最大值
increment by    用于指定序列号之间的间隔,其默认值为1,如果integer为正值,则生成的序列按升序排列,如果integer为负值,则生成的序列将按降序排列.
Maxvalue    指定序列可以生成的最大值.
Nomaxvalue    如果指定了nomaxvalue,oracle将升序序列的最大值设为1027,将降序序列的最大值设为-1.这是默认选项
Minvalue    指定序列的最小值, minvalue必须小于或等于start with的值,并且必须小于maxvalue的值
Nominvalue    如果指定了nominvalue,oracle将升序的最小值设为1,或将降序序列的最小值设为-1026.这是默认值.
Cycle    指定序列在达到最大值或最小值后,将继续从头开始生成值.
Nocycle    指定序列在达到最大值或最小值后,将不能再继续生成值.这是默认选项
Cache    使用cache选项可以预先分配一组序列号,并将其保留在内存中,这样可以更快地访问序列号.当用完缓存中的所有序列号.oracle将生成另一组数值,并将其保留在缓存中.
Nocache    不会加快访问速度而预先分配序列号,如果在创建序列时忽略了cache和nocache,orcale将默认缓存20个序列号

2.访问序列语法:
序列名.nextval    创建序列后第一次使用nextval时,将返回该序列的初始值,以后在引用nextval时,将使用increment by子句的值来增加序列值,并返回这个新值.
例如:
Insert into toys (toyed,toyname,toyprice) value(序列名.nextval,’tom’,25)
序列名.currval    返回序列的当前值,即最后一次引用nextval时返回的值
                例如:
                Select 序列名.currval from dual;

3.更改序列语法:
Alter sequence [用户名(模式).]序列名
[increment by integer]
[maxvalue integer| nomaxvalue]
[minvalue integer| nominvalue]
[cycle | nocycle]
[cache integer | nocache];
注:不能修改序列的start with参数,在修改序列时,应注意升序序列的最小值应小于最大值

4.删除序列语法:
    drop sequence [用户名(模式).]序列名;

三.实例

--创建序列
create sequence s_emp_no
start with 1
maxvalue 99
minvalue 1
increment by 2 --序列的递增数
cycle--重复  默认不重复
cache 10 --nocache不缓存序列值
order;--有序输出
select s_emp_no.nextval from dual;
--查询当前序列
select s_emp_no.currval from dual;

--倒序列
create sequence s_emp_no
start with 99
maxvalue 99
minvalue 1
increment by -1 --序列的递增数
cycle--重复  默认不重复nocycle
cache 10 --nocache不缓存序列值
order;--有序输出
select s_emp_no.nextval from dual;

--删除序列
drop sequence s_emp_no;

猜你喜欢

转载自blog.csdn.net/qq_35981996/article/details/85809285