序列是用来生成唯一,连续的整数的数据库对象。序列通常用来自动生成主键或唯一键的值。序列可以按升序排列,也可以按降序排列。
创建序列语法:create sequence 序列名称 [start with 初始量] [increment by 递增量] [maxvalue 最大值 | nomaxvalue] [minvalue 最小值 | nominvalue] [cycle | nocycle] [cache 缓存个数 | nocache];
start with:生成第一个序列号, 对于升序列, 其默认值为序列最小值; 对于降序序列, 其默认值为序列的最大值 。increment by:用于指定序列号之间的间隔, 其默认值为 1, 如果 integer 为正值, 则生成的序列按升序排列, 如果 integer 为负值, 则生成的序列将按降序排列。maxvalue:序列可以生成的最大值。nomaxvalue: Oracle 将升序序列的最大值设为 1027, 将降序序列的最大值设为 - 1. 这是默认选项。minvalue:minvalue 必须小于或等于 start with 的值, 并且必须小于 maxvalue 的值。nominvalue:oracle 将升序的最小值设为 1, 或将降序序列的最小值设为 - 1026. 这是默认值。cycle:序列在达到最大值或最小值后, 将继续从头开始生成值。nocycle:序列在达到最大值或最小值后, 将不能再继续生成值。不写默认为 nocycle 这是默认选项 。cache:预先分配一组序列号, 并将其保留在内存中, 这样可以更快地访问序列号. 当用完缓存中的所有序列号. oracle 将生成另一组数值, 并将其保留在缓存中。nocache:不会加快访问速度而预先分配序列号, 如果在创建序列时忽略了 cache 和 nocache,orcale 将默认缓存 20 个序列号。
创建序列
创建序列:从 1 开始,每次增加 1,最大值不受限制,不循环,缓存 10 个序列号。
- create sequence seq_tb_person
- minvalue 1
- maxvalue 999999999999999999999999999
- start with 1
- increment by 1
- cache 20;
create sequence Users_SEQ
increment by 1
start with 1
minvalue 1 nomaxvalue
NOCYCLE -- 在达到最大值后停止生成下一个值
cache 10;
序列的使用:创建序列号:
create sequence grade_Id
创建表:create table grade(gid number primary key not null,score number not null) tablespace roottablespace
利用序列号向表中添加数据:insert into grade(gid,score) values(grade_Id.Nextval,95)
insert into grade(gid,score) values(grade_Id.Nextval,90) 查询数据
select *from grade
修改序列语法:alter sequence 序列名称 [start with 初始量] [increment by 递增量] [maxvalue 最大值 | nomaxvalue] [minvalue 最小值 | nominvalue] [cycle | nocycle] [cache 缓存个数 | nocache];
修改序列删除序列
- alter sequence seq_tb_person
- minvalue 1
- maxvalue 999999999999999999999999999
- -- start with 49 对于已经启动的序列,无法设置初始值
- increment by 1
- cache 20;
- drop sequence序列名;
- select grade_Id.CURRVAL from dual --返回序列的当前值,即最后一次引用NEXTVAL时返回的值。
- 注意事项:
来源: http://www.linuxidc.com/Linux/2017-12/149631.htm