加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【Oracle学习】之 序列(Sequence)

发布时间:2020-12-12 14:53:10 所属栏目:百科 来源:网络整理
导读:oracle文档:https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6015.htm#SQLRF01314 一、序列的特点: 1。 可以为表中的记录自动产生唯一序号; 2。 由用户创建并且可以被多个用户共享; 3。典型应用是生成主键值,用于标识记录的唯一性; 4

oracle文档:https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_6015.htm#SQLRF01314

一、序列的特点:

1。 可以为表中的记录自动产生唯一序号;
2。 由用户创建并且可以被多个用户共享;
3。典型应用是生成主键值,用于标识记录的唯一性;
4。允许同时生成多个序列号,而每一个序列号是唯一的。
5。使用缓存可以加速序列的访问速度。


二、创建序列:

CREATE SEQUENCE [ schema. ] sequence
[ { INCREMENT BY | START WITH } integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
]…

START WITH:设置序列初始值,默认值为1。

INCREMENT BY:设置相邻两个元素之间的差值,默认为 1。

NOMAXVALUE:默认情况下,递增序列的最大值为10^28 - 1

NOMINVALUE:最大值:-1, 最小值为 -(10^27 - 1)


三、序列的使用:

序列具有CURRVALNEXTVAL两个伪列。(均返回NUMBER类型)

①CURRVAL:返回序列的当前值

②NEXTVAL:在序列中产生新值并返回此值

++++以下语句可以使用序列的NEXTVAL和CURRVAL:+++++

①SELECT语句的目标列中;

②INSERT:语句的子查询的目标列中;

③INSERT:语句的VALUES子句中;

④UPDATE:语句的SET子句中。

++++以下语句可以使用序列的NEXTVAL和CURRVAL:+++++

对视图查询的SELECT目标列中;

使用了DISTINCT关键字的SELECT语句中;

SELECT语句中使用GROUP BY、HAVING或ORDER BY子句时;

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

在CREATE TABLE 或 ALTER TABLE 语句中的默认值表达式中。


Tips:

(1)

(2)在访问序列中的序号时,可能会发生序号不连续的情况,不连续的原因可能是事务发生了回滚,或者多个用户共同访问同一个序列。


四、修改序列:

  可以使用ALTER SEQUENCE 语句修改序列。除了不能修改序列的START WITH参数外,可以对序列其他参数进行修改。如果要修改MAXVALUE参数,需要保证修改后的最大值大于序列的当前值(CURRVAL)。此外,序列的修改只影响以后生成的序列值。



五、查看序列信息

dba_sequences

all_sequences

user_sequences(一般使用这个查看)


六、删除

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读