Oracle笔记--序列

序列

序列是数据库对象,独立于表存储,可以为多个表使用
序列最主要的用途就是创建一个主键的值
序列能确保这个主键的唯一性

创建序列

语法

CREATE SEQUENCE sequence
	    [INCREMENT BY n]
	    [START WITH n]
	    [{MAXVALUE n| NOMAXVALUE}]
	    [{MINVALUE n| NOMINVALUE}]
	    [{CYCLE | NOCYCLE}]
	    [{CACHE n| NOCACHE}];

格式说明:

sequence:序列的名字
INCREMENT BY n:序列号之间的间隔(又称步长),n是一个整数,默认为1,如果该值为负值,该序列为降序序列
START WITH n:第一个序列数 ,n默认为1
MAXVALUE n:序列最大值,如果序列达到最大值,且不是继续循环产生序列值,则会提示序列超过最大值,序列最小值与此类似
NOMAXVALUE:无最大值,默认对于升序序列,最大值为10^27,降序序列为-1
MINVALUE n:序列最小值
NOMINVALUE:无最小值,默认对于升序序列,最小值为1,降序序列为-10^26
CYCLE|NOCYCLE:序列在到达它的最大或最小值之后,是否继续循环产生,默认是不循环产生
CACHE n| NOCACHE:指定Oracle数据库预先分配多少值保持在内存中,默认为20个值。在内存中缓冲序列可以提高对序列的存取速度,在第一次使用到序列时,一定数量的序列值被存入缓存,之后针对下一个序列值的请求可以直接从缓存中获取,提高性能。
–对于降序,最大值为-1,初始值不可以大于-1
–同样,升序对应为1

创建序列

create sequence seq_bookid
start with 1     --默认 1
increment by 10   --默认 1
maxvalue 99999999  --默认 10的27次方
cycle   -- nocycle 默认 当达到最大值后是否循环生成序列号
cache 20 -- nocache 缓存,提前缓存20个,默认为cache 20 

序列的使用

nextval --生成下一个序列号
currval --取出当前序列号
通过NEXTVAL和CURRVAL这两个伪列,将序列应用到表中,NEXTVAL伪列返回下一个可用的序列值,可以通过“序列名.NEXTVAL”引用这个值,此时一个新的序列值被产生并存到CURRVAL中
CURRVAL伪列获得当前的序列值,NEXTVAL必须在CURRVAL引用前,需要通过“序列名.CURRVAL”引用这个值
–向表中插入数据

create table tb_book(
       bookid number(6) primary key,
       bookname varchar2(32) not null,
       author varchar2(32) not null
)
insert into tb_book values(seq_bookid.nextval,'java高级教程1','java');
insert into tb_book values(seq_bookid.nextval,'java高级教程2','java');
insert into tb_book values(seq_bookid.nextval,'java高级教程3','java');
select seq_bookid.nextval from dual
select seq_bookid.currval from dual
delete from tb_book where bookid = 140;

–序列只会递增或递减,不会回退,将140使用后,seq_bookid.nextval只会递增或递减,不会回退。

修改序列

修改序列使用ALTER,且START WITH选项不可以修改

语法形式

ALTER SEQUENCE sequence
	    [INCREMENT BY n]
	    [{MAXVALUE n| NOMAXVALUE}]
	    [{MINVALUE n| NOMINVALUE}]
	    [{CYCLE | NOCYCLE}]
	    [{CACHE n| NOCACHE}];

使用ALTER SEQUENCE修改序列,只有以后的序列值会受到影响,之前的不受影响
修改序列的部分选项不能使原有序列产生错误,例如不能将序列的最大值修改为小于当前的序列值

删除序列

DROP SEQUENCE sequence

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值