序列

 序列是用于生成唯一、连续序号的对象 序列可以是升序的,也可以是降序的。

1、创建索引

   语法

CREATE SEQUENCE sequence_name       --sequence_name创建的序列名称
       [START WITH integer]         --START WITH起始值
       [INCREMENT BY integer]       --INCREMENT BY两个序列号的间隔
       [MAXVALUE integer|NOMAXVALUE]--MAXVALUE:最大值
       [MINVALUE integer|NOMINVALUE]--MINVALUE:最小值
       [CYCLE|NOCYCLE]              --CYCLE:达到最大或最小值时,进行从头开始生成值;NOCYCLE:不继续生成
       [CACHE integer|NOCACHE];    --CACHE:预先缓存一组序列号;NOCACHE:不缓存

 NOMAXVALUE:Oracle将升序序列的最大值设为 10∧27,将降序的最大值设为 -1,这是默认值。

 NOMINVALUE:Oracle将升序序列的最小值设为 1,将降序的最小值设为 -1026,这是默认值。

 注意:如果你忽略了CACHENOCACHE选项,Oracle将默认缓存20个序列号。

    示例:

create sequence dept_seq
       start with 60 
       increment by 10
       maxvalue 10000

2、访问序列

NEXTVAL: 返回序列的下一个值

CURRVAL: 返回序列的当前值

 1、查询当前索引

--查询当前的序列
select scott.dept_seq.currval  from dual;

刚创建完索引,你直接查询会出错(如下)

注意:Oracle刚创建完序列后用currval查询不了当前值的,得先用nextval查询过后才能进行currval的查询。

3、更改序列

   语法

ALTER SEQUENCE [schema.]sequence_name
      [INCREMENT BY integer]
      [MAXVALUE integer|NOMAXVALUE]
      [MINVALUE integer|NOMINVALUE]
      [CYCLE|NOCYCLE]
      [CACHE integer|NOCACHE];

  注意:不能更改序列的START WITH参数。

   示例:

alter sequence dept_seq
       increment by 30
       maxvalue 12000

4、删除序列

   语法

DROP SEQUENCE [schema.]sequence_name;

  示例:

drop sequence dept_seq

 

5、使用序列

  ① 在不需要并行的环境中可以选择使用序列作为主关键字。

  ② 使用SYS_GUID函数

--使用SYS_GUID()函数
select SYS_GUID() from dual;

注意:使用SYS_GUID()函数生成32位的唯一编码。它源自不需要对数据库进行访问的时间戳机器标识符,这会保证创建的标识符在每个数据库里都是唯一的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值