Oracle 序列学习与使用总结
2022/8/23 2:23:56
本文主要是介绍Oracle 序列学习与使用总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Oracle序列学习与使用总结
by:授客 QQ:1033553122
简述
序列是oracle提供的用于生成一系列数字的数据库对象,序列会自动生成顺序递增的序列号,可用于提供唯一的自动递增主键。序列和视图一样,并不占用实际的存储空间,只是在数据字典中保存他的定义信息。
创建序列
当创建序列时必须拥有create sequence
或者 create any sequence
系统权限。
CREATE SEQUENCE sequenceName //创建序列名称 [INCREMENT BY n] //序列递增值 如果n是正数就递增,如果是负数则递减 默认是1 [START WITH n] //序列起始值,递增默认是minvalue 递减是maxvalue [{MAXVALUE n | NOMAXVALUE}] // 序列最大值 [{MINVALUE n | NOMINVALUE}] // 序列最小值 [{CYCLE | NOCYCLE}] // 是否循环,如果使用CYCLE,则当序列到达最大值(maxvalue)或者最小值(minvalue)时,重置序列起始值,并现有规则继续生成序列值。如果使用NO CYCLE 选项,那么在序列达到最大值或最小值之后,如果再试图获取下一个值将返回一个错误。 [{CACHE n | NOCACHE}] // 是否预先生成序列号,并存储在内存中。n表示预生成的序列值个数。使用cache可能会跳号, 比如数据库突然不正常关闭(shutdown abort),cache中的序列号就会丢失. 所以,为了避免这种情况,无特殊需求的话,使用NOCACHE [order | noorder]; // 是否按序生成序列。order表示按序生成序列(比如第一个序列值1,第二个为2,以此类推),noorder表示不包装序列值生成顺序。
说明:[]
表示子句可选。
示例:
CREATE SEQUENCE orders_seq increment By 1 start With 1 Maxvalue 2000 Minvalue 1 cycle Nocache;
修改序列
类似创建序列,不过需要注意的是,不支持修改序列起始值。
示例:
ALTER SEQUENCE orders_seq increment By 10 Maxvalue 3000;
使用序列
一旦创建了序列,就可以使用seqName.CURRVAL,seqName.NEXTVAL来分别获取序列的当前值和下一个序列值。
可以使用序列的地方:
- INSERT的VALUES子句、子查询
- 不包含子查询、snapshot、视图的 SELECT 语句中的列表
- UPDATE中的SET子句
不可以使用序列的地方:
-
子查询、视图和实体化视图的查询
-
带DISTINCT的SELECT语句
-
带 GROUP BY和ORDER BY的SELECT语句
-
带UNION或INTERSECT或MINUS的SELECT语句
-
SELECT中的WHERE字句
-
CREATE TABLE与ALTER TABLE中的default值、check约束条件。
示例:
INSERT INTO MY_ORDER('ID', 'SEQ', 'ORDER_NO') VALUES(1, orders_seq.NEXTVAL, 'xdfkgdls20220821'); SELECT orders_seq.CURRVAL FROM DUAL;
注意:
- 第一次使用
seqName.NEXTVAL
返回的是序列的起始值;随后的seqName.NEXTVAL
会自动增加你定义的INCREMENT BY
的值,然后返回增加后的值作为序列值。 seqName.NEXTVAL
初始化之后才能使用seqName.CURRVAL
删除序列
DROP SEQUENCE seqName;
这篇关于Oracle 序列学习与使用总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升