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 序列学习与使用总结的更多相关文章
- Oracle RMAN 学习:恢复
Oracle RMAN 学习:恢复 6 rman恢复 Rman中的恢复对应restore,recover Restore,数据修复,利用备份集的数据文件来替换已损坏的数据文件或将其恢复到另外一个位置, ...
- 一次获取多个oracle序列值
一次获取多个oracle序列值 学习了:http://blog.csdn.net/wangchsh2008/article/details/53495961 select seq_one.nextva ...
- Oracle基础学习笔记
Oracle基础学习笔记 最近找到一份实习工作,有点头疼的是,有阶段性考核,这...,实际想想看,大学期间只学过数据库原理,并没有针对某一数据库管理系统而系统的学习,这正好是一个机会,于是乎用了三天时 ...
- Oracle DBA 学习总结
对于学习Oracle 数据库,应该先要了解Oracle 的框架.它有物理结构(由控制文件.数据文件.重做日志文件.参数文件.归档文件.密码文件组成) ,逻辑结构(表空间.段.区.块),内存分配( SG ...
- oracle 序列中cache 有什么用途
create sequence name increment by x //x为增长间隔 start with x //x为初始值 maxvalue x //x为最大值 minvalue x //x为 ...
- Asp.Net MVC4 + Oracle + EasyUI 学习 序章
Asp.Net MVC4 + Oracle + EasyUI 序章 -- 新建微软实例 本文链接:http://www.cnblogs.com/likeli/p/4233387.html 1. 简 ...
- oracle序列
一.序列 序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生 ...
- oracle 序列 详解
序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l 自动提供唯一的数值 l 共享对象 l 主要用于提供主键值 l 将序列值装入内存可以提高访问效率 创建序列: 1. 要有创建 ...
- 触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证--Oracle序列
程序开发时报错:触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证打开触发器的定义,执行其中的语句,发现序列 U_USER_INFO_SEQ 未定义.什么是序列呢?序列相当于sql ...
- Oracle序列使用:建立、删除
转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...
随机推荐
- ObjectArx 创建一个自定义实体项目步骤
我使用的环境是cad2018+objectarx2018+vs2015+win10.先要安装desk向导程序,用向导创建项目对于初学者来说是很方便的,然后在配置程序编译链接的环境,最后就可以写一个项目 ...
- VSCode配置JetBrains Mono字体
1. 下载JetBrains Mono字体 官网下载地址:https://www.jetbrains.com/lp/mono/ 2. 在VSCode配置字体 { "editor.fontFa ...
- SpringAi
Spring AI 初学 Spring AI 官方地址 "spring 不生产 AI,只是 AI 工具的搬运工" 项目可以查看gitee Open AI 前期准备 Open AI官 ...
- ASP.NET Core替换Action实际执行方法
RequestDelegate 上次,我们在<如何判断当前请求的API类型>中查看endpoints.MapControllers()实现时,最终定位到ActionEndpointFact ...
- Json.Net Deserialize a Collection from BSON
Deserialize a Collection from BSON (newtonsoft.com) This sample sets ReadRootValueAsArray to true so ...
- Prism IoC 依赖注入
现有2个项目,SinglePageApp是基于Prism创建的WPF项目,框架使用的是Prism.DryIoc,SinglePageApp.Services是C#类库,包含多种服务,下面通过使用Pri ...
- nginx001
本文档版权归属:陈雷雷,仅限学习交流 QQ:370460470 blog:www.chenleilei.net Nginx服务实践 简述Nginx(nginx.org) Nginx (engine x ...
- ElasticSearch性能原理拆解
逐层拆分ElasticSearch的概念 Cluster:集群,Es是一个可以横向扩展的检索引擎(部分时候当作存储数据库使用),一个Es集群由一个唯一的名字标识,默认为"elasticsea ...
- Vue 3与ESLint、Prettier:构建规范化的前端开发环境
title: Vue 3与ESLint.Prettier:构建规范化的前端开发环境 date: 2024/6/11 updated: 2024/6/11 publisher: cmdragon exc ...
- python类和对象初识
# python类和对象初识 a = 2 b = 3 print(id(a)) print(type(a)) print(a) print(id(b)) print(type(b)) print(b) ...