oracle数据库中序列使用讲解
定义:
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。
其主要的用途是生成表的主键值,可以在插入语句中使用,也可以通过查询检查当前值,或使序列增至下一个值。
创建序列需要使用CREATE SEQUENCE系统权限,序列的创建方法:
create sequence 序列名
[increment by n]
[start with n]
[{maxvalue/minvalue n|nomaxvalue}]
[{cycle/nocycle}]
[{cache n|nocache}];
释义:
increment by:用于定义序列的步长,若果省略,则默认为1,若果出现负值,则代表序列的值是按照此步长递减的。
start with:定义序列的初始值(即产生的第一个值),默认为1
maxvalue:定义序列的最大值。minvalue:定义序列的最小值。nomaxvalue:表示默认选项,没有最大值定义。
cycle/nocycle:表示当序列生成器的值达到限制值后是否循环,cycle表示循环,nocycle表示不循环。
cache/nocache:定义存放序列的内存块儿的大小,默认为20。nocache:表示不对序列进行内存缓冲。对序列进行内
存缓冲可以改善缓存的性能。
删除序列的语法:
drop sequence 序列名;
序列的使用:
currval和nextval来引用序列:
调用mextval将生成序列中的下一个序列号,调用时指出序列名,即用以下方法:
序列名.nextval;
currval用于产生序列的当前值,无论调用多少次都不会产生序列的下一个值,如果序列还没有通过调用nextval产生
过序列的下一个值,先引用currval将没有意义。
调用currval的方法如下:
序列名.currval;
第一次调用nextval会产生序列的初始值。
将序列作为表的主键的方法:
在向表中插入数据时调用nextval方法
insert into 表名 values (序列名.nextval,值1,值2,...);
定义:
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。
其主要的用途是生成表的主键值,可以在插入语句中使用,也可以通过查询检查当前值,或使序列增至下一个值。
创建序列需要使用CREATE SEQUENCE系统权限,序列的创建方法:
create sequence 序列名
[increment by n]
[start with n]
[{maxvalue/minvalue n|nomaxvalue}]
[{cycle/nocycle}]
[{cache n|nocache}];
释义:
increment by:用于定义序列的步长,若果省略,则默认为1,若果出现负值,则代表序列的值是按照此步长递减的。
start with:定义序列的初始值(即产生的第一个值),默认为1
maxvalue:定义序列的最大值。minvalue:定义序列的最小值。nomaxvalue:表示默认选项,没有最大值定义。
cycle/nocycle:表示当序列生成器的值达到限制值后是否循环,cycle表示循环,nocycle表示不循环。
cache/nocache:定义存放序列的内存块儿的大小,默认为20。nocache:表示不对序列进行内存缓冲。对序列进行内
存缓冲可以改善缓存的性能。
删除序列的语法:
drop sequence 序列名;
序列的使用:
currval和nextval来引用序列:
调用mextval将生成序列中的下一个序列号,调用时指出序列名,即用以下方法:
序列名.nextval;
currval用于产生序列的当前值,无论调用多少次都不会产生序列的下一个值,如果序列还没有通过调用nextval产生
过序列的下一个值,先引用currval将没有意义。
调用currval的方法如下:
序列名.currval;
第一次调用nextval会产生序列的初始值。
将序列作为表的主键的方法:
在向表中插入数据时调用nextval方法
insert into 表名 values (序列名.nextval,值1,值2,...);