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.CURRVALseqName.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 序列学习与使用总结的更多相关文章

  1. Oracle RMAN 学习:恢复

    Oracle RMAN 学习:恢复 6 rman恢复 Rman中的恢复对应restore,recover Restore,数据修复,利用备份集的数据文件来替换已损坏的数据文件或将其恢复到另外一个位置, ...

  2. 一次获取多个oracle序列值

    一次获取多个oracle序列值 学习了:http://blog.csdn.net/wangchsh2008/article/details/53495961 select seq_one.nextva ...

  3. Oracle基础学习笔记

    Oracle基础学习笔记 最近找到一份实习工作,有点头疼的是,有阶段性考核,这...,实际想想看,大学期间只学过数据库原理,并没有针对某一数据库管理系统而系统的学习,这正好是一个机会,于是乎用了三天时 ...

  4. Oracle DBA 学习总结

    对于学习Oracle 数据库,应该先要了解Oracle 的框架.它有物理结构(由控制文件.数据文件.重做日志文件.参数文件.归档文件.密码文件组成) ,逻辑结构(表空间.段.区.块),内存分配( SG ...

  5. oracle 序列中cache 有什么用途

    create sequence name increment by x //x为增长间隔 start with x //x为初始值 maxvalue x //x为最大值 minvalue x //x为 ...

  6. Asp.Net MVC4 + Oracle + EasyUI 学习 序章

    Asp.Net MVC4 + Oracle + EasyUI  序章 -- 新建微软实例 本文链接:http://www.cnblogs.com/likeli/p/4233387.html 1.  简 ...

  7. oracle序列

    一.序列 序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生 ...

  8. oracle 序列 详解

    序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l  自动提供唯一的数值 l  共享对象 l  主要用于提供主键值 l  将序列值装入内存可以提高访问效率 创建序列: 1.  要有创建 ...

  9. 触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证--Oracle序列

    程序开发时报错:触发器 'SA.U_USER_INFO_TRG' 无效且未通过重新验证打开触发器的定义,执行其中的语句,发现序列 U_USER_INFO_SEQ 未定义.什么是序列呢?序列相当于sql ...

  10. Oracle序列使用:建立、删除

    转自:http://www.cnblogs.com/WangPB/archive/2010/07/13/1776766.html 在开始讲解Oracle序列使用方法之前,先加一点关于Oracle cl ...

随机推荐

  1. Nginx 修饰符 Location 详解

    概述 location 指令可以用在虚拟服务器 server 部分,并且意味着提供来自客户端的 URI 或者内部重定向访问. location 的定义如下: location [modifier] u ...

  2. 转 [golang]为什么Response.Body需要被关闭

    Body io.ReadCloser       The http Client and Transport guarantee that Body is always non-nil, even o ...

  3. FFmpeg下载编译、代码结构以及编译系统

    从这里开始,就要踏上学习FFmpeg的旅程了,使用的FFmpeg版本5.0.1 1.ubuntu下,如何下载并编译FFmpeg源码 打开FFmpeg官网 Download FFmpeg,我们可以通过g ...

  4. Javascript高级程序设计第三章 | ch3 | 阅读笔记

    语言基础 语法 标识符 注释 // /* */ 严格模式 // 也可以单独指定在一个函数中进行 'use strict' 语句 语句末尾分号不是必须的,但是最好加上 加上分号方便开发者删除空行压缩代码 ...

  5. com.netflix.hystrix.exception.HystrixBadRequestException: null

    com.netflix.hystrix.exception.HystrixBadRequestException: null 排查方法:如果有多个feign接口的调用,可以在每个调用的方法加上try- ...

  6. elasticsearch-head插件安装及启动,关闭命令

    启动插件 /elasticsearch-head目录npm run start启动elasticsearch 不能使用root账号 切换账号:su es./bin/elasticsearch 打印日志 ...

  7. -bash: curl: command not found 卸载后重新安装

    -bash: curl: command not found rpm -e --nodeps curl yum remove curl rpm -qa|grep curl yum -y install ...

  8. #PowerBi Superchange PowerBi 开篇(1)

    本书由B站京西漫步老师推荐,并提供了相应的学习资源,有同感兴趣的朋友,可以加我好友免费分享资源. 本书主要以总结笔记,原文+译文+部分案例实操为主. 预计更新时间为23年6月-23年7月. 本系列笔记 ...

  9. 百度地图API 循环添加信息窗口问题

    百度地图API循环添加信息窗口,会出现所有消息只显示在第一个窗口的位置的问题.并且信息内容相同 解决方法1 转载自 https://blog.csdn.net/zz_mm/article/detail ...

  10. Linux安全审计之audit安装与使用

    场景 安全最重要的一步是内部安全,如何监控用户的行为是一个永恒不变的话题. audit可以详细监控用户的行为,详细到查看或修改了某个文件.这些都可以在日志中查看到. 安装 小贴士: CentOS默认已 ...