Oracle序列的创建和使用

1.创建序列

语法:

    create sequence 序列名 [可选参数]

(序列名常定义为‘seq_XXX’的形式,创建序列不能使用replace)

 可选参数说明:

  1.     increment by:序列每次增加的值,负数表示递减,缺省值为1;
  2.     start with:序列的初始值,缺省值为1;
  3.     maxvalue:序列可生成的最大值,缺省值为nomaxvalue,即不设置最大值;系统能产生的最大值为10的27次方;
  4.     minvalue:序列可生成的最小值,缺省值为nominvalue,即不设置最小值;
  5.     cycle:定义当序列达到最大/小值后是否循环,缺省值为不循环;nocycle:不循环;cycle:循环;如果不使用循环达到限制值后继续产生新值就会出错;使用循环达到最大值后的下一个值为1,和start with设置的值无关,递增还是increment by设置的值;
  6.     cache:定义缓存序列的个数,缺省值为20,nocache表示不设置缓存;使用缓存可以提高序列的性能,但数据库出错时会造成数据丢失使序列不连续。

 例:创建一个循环不使用cache的序列

   create  sequence seq_userid increment by 1 start with 1 maxvalue 99999 cycle nocache;

2.序列的使用

语法:

     序列名.[currval/nextval]

 currval:表示当前值,新序列若没使用过nextval不能直接使用当前值,会报错;

 nextval:表示序列的下一个值

例:查询序列的值

       select seq_name.nextval from dual;

 例:SQL语句中使用序列

       insert into 表名 value (seq_name.currval);

3.删除修改序列

语法:

    drop sequence [用户名.]序列名

    alert sequence [用户名.]序列名 [可选参数]

例:删除序列

    dorp sequence seq_name;

例:修改序列

     alert sequence seq_name  increment by 10  nomaxvalue  nocycle  cache 10

     (修改序列只能修改这几个值,不能修改初始值)

4.查看所有序列

查看当前用户下的所有序列:

      select * from user_sequences;

查看所有用户下的所有序列:

     select * from all_sequences;

还有一个

     select * from dba_sequences;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值