oracle 11g中的序列

Oracle 11g序列详解
本文介绍了Oracle 11g中的序列概念,包括升序和降序序列的创建,焦点集中在CREATE SEQUENCE语句的语法,特别是cache选项的作用。同时,讲解了如何通过序列的伪列NEXTVAL和CURRVAL访问序列值,并阐述了序列在实际应用中的使用场景。最后,提到了序列的修改和删除操作。

一、序列

  • 序列是用于生成唯一、连续序号的对象
    序列可以是升序的(步长正),也可以是降序的(步长负)
    使用CREATE SEQUENCE语句创建序列

语法:

① 创建序列需要有创建序列的权限:
grant create sequence to scott ; --创建序列的权限属于resource这个角色。

 create sequence seqname 
 start with  1   --指定序列从哪里开始
 increment by  1 --指定序列的增长速度(步长)可正可负
 maxvalue  2000  --指定该序列的最大值
 minvalue  1     --指定该序列的最小值
 nocycle         --达到最大值,循环(即又从1~2000)cycle 不循环nocycle
 cache   10--指定内存预先分配的序号数 例10 

②cache解释:
        首先,选取序列中的某一个值如4,有两种方法,一是oracle计算出4,然后返回给用户,下次你需要5,oracle又会重新计算一遍返回给你,另一种是你需要4,oracle把4,5,6,7,8,9,10等都取出来放在内存中,下一次再取5,oracle直接从内存中返回给你。cache 10 就是把4~13这十个数都取出来放到内存中,瑕疵直接从内存中读取,提高了查询速度。 在创建序列时,不写cache ,一个序列的默认cache为20

③查看用户自己拥有的序列:

select * from user_sequence;

二、访问序列:

可以通过序列的伪列来访问序列的值;

  • NEXTVAL 返回序列的下一个值
  • CURRVAL 返回序列的当前值

    第一次使用序列中的值的时候,要使用NEXTVAL

select seqname.nextval from dual;
select seqname.currval from dual;

序列的应用:

create sequence seq1 start with 1 increment by 1 maxvalue 1000 minvalue 1 nocycle;
create table student (sno number(4),sname varchar2(10));
insert into student values(seq1.nextval , 'A');
insert into student values(seq1.nextval , 'AB');
insert into student values(seq1.nextval , 'ABC');

-- 如此便实现了学号的自增。

序列的修改与删除:

序列的修改除了start with 参数无法修改以外,其余参数均可修改。

ALTER SEQUENCE seqname  MAXVALUE 5000 CYCLE;
DROP SEQUENCE seqname;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值