oracle序列对象是什么,oracle数据库对象-序列

序列(sequence)是oracle数据库对象中的一个,每次使用时它会自动增加(或减少)。

1、创建序列

语法:

CREATE SEQUENCE sequence_name

[INCREMENT BY n]

[START WITH n]

[{MAXVALUE n | NOMAXVALUE}] 10^27

[{MINVALUE n | NOMINVALUE}] -10^27

[{CYCLE | NOCYCLE }]

[{CACHE n | NOCACHE}];

说明:

INCREMENT BY:每次加几个

START WITH:从几开始

MAXVALUE:最大值是多少,或NOMAXVALUE不设置最大值

MINVALUE:最小值是多少,或NOMINVALUE不设置最小值

CYCLE:累加到最大值之后循环,或NOCYCLE一直累加不循环

CACHE:设置内存里缓存多少个序列,如果系统down掉了内存中的序列会丢失,导致序列跳号,也可以设置为NOCACHE不缓存

创建语句:

create sequence seq1

increment by 1

start with 1

maxvalue 999999

minvalue 1

cycle

nocache;

这个序列的值从1到999999递增循环。

2、使用序列

在表中使用两个伪列nextval、currval来使用创建好的序列。

nextval会返回下一个可用的序列值,每一次被引用时,nextval都会返回一个唯一值。

currval会获取当前的序列值。

SQL> select seq1.nextval from dual;

NEXTVAL

----------

1

SQL> select seq1.currval from dual;

CURRVAL

----------

1

SQL> select seq1.nextval from dual;

NEXTVAL

----------

2

只要使用了nextval序列的值就自动加1。

3、往表中插入序列

SQL> create table STU2 (

id number,

name varchar2(40)

);

Table created.

SQL> insert into STU2 values (seq1.nextval, 'testtest');

1 row created.

SQL> select * from STU2;

ID NAME

---------- ----------------------------------------

4 testtest

修改id字段的数据类型:

delete from STU2;

alter table STU2 modify id char(1);

SQL> insert into STU2 values (seq1.nextval, 'test2test2');

1 row created.

SQL> select * from STU2;

I NAME

- ----------------------------------------

5 test2test2

插入时,数字型和字符型oracle会自动做转换,序列像一个组件一样在插入记录时直接拿来用。

4、删除序列

drop sequence seq1;

5、使用NEXTVAL和CURRVAL的规则

可以在下列上下文中使用NEXTVAL和CURRVAL:

不是子查询一部分的SELECT语句的SELECT列表

INSERT语句中子查询的SELECT列表

INSERT语句的VALUES子句

UPDATE语句的SET子句

不能在下列上下文中使用NEXTVAL和CURRVAL:

视图的SELECT列表

带有DISTINCT关键字的SELECT语句

带有GROUP BY、HAVING或ORDER BY子句的SELECT语句

SELECT、DELETE或UPDATE语句中的子查询

CREATE TABLE或ALTER TABLE语句中的DEFAULT表达式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值