首页 > 数据库 >Oracle 序列学习与使用总结

Oracle 序列学习与使用总结

时间:2022-08-22 00:33:13浏览次数:59  
标签:总结 seqName NEXTVAL 生成 序列 使用 Oracle SELECT

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;

标签:总结,seqName,NEXTVAL,生成,序列,使用,Oracle,SELECT
From: https://www.cnblogs.com/shouke/p/16611522.html

相关文章

  • centos6安装oracle11g
    下载软件包首先请下载p10404530_112030_Linux-x86-64_1of7.zipp10404530_112030_Linux-x86-64_2of7.zip这里我已上传百度盘链接:http://pan.baidu.com/s/1c2KCrr6密码......
  • AtCoder Beginner Contest 265赛后总结
    生日打了场AtcoderBeginner还可以吧……做出了前四道题,第五、六题是dp方程没想出来QwQA-Apple水题+1,感谢atcoder把坑都亮出来QwQ……分两种情况讨论:三个一卖的比(一个......
  • **面试总结
    hs面试总结:1服务器传输命令scp:远程文件拷贝程序,是securecopyprogram的的缩写-r(递归)2.查看服务器运行情况以及cpu,运用哪个命令top:查看服务器各个进程情......
  • [莫比乌斯反演]一些常用公式总结
    一.莫比乌斯反演公式$$$\qquad\qquad\qquad\qquad\qquad$设$F(n)=\sum\limits_{d|n}f(d)$,那么有$f(n)=\sum\limits_{d|n}\mu(d)F(\frac{n}{d})$其中$\mu(d)$......
  • 【MySQL】MySQL总结
    目录1.数据库1.1数据库本质1.2数据库分类1.3SQL与NoSQL1.4数据库重要概念1.5数据库存储引擎1.5.1定义1.5.2存储引擎1.5.3不同存储引擎之间底层文件的区别2.针对......
  • 十周周末总结 MySQL的介绍与使用
    python十周周末总结MySQL的介绍与使用MySQL字符编码与配置文件查看数据库的基本信息(用户,字符编码)/swindos下MySQL默认的配置文件my_default.ini修改配置......
  • 周总结-9week
    目录字符编码与配置文件存储引擎创建表的完整语法字段类型之整型字段类型之浮点型字段类型之字符类型数字的含义字段类型之枚举与集合字段类型之日期类型字段约束条件约束......
  • C++反序列化--一种基于class infomation反射库的反序列化数据结构
    序列化与反序列化概念:将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯。这个将程序数据转化成能被存储并传输的格式的......
  • 总结~音节=>单词---如何划分音节及音节的类型
    参考:https://baijiahao.baidu.com/s?id=1667812287459301608&wfr=spider&for=pc   大家好,今天我们一起来学习下音节的相关内容,本文涉及到了音节的定义,如何划分......
  • 学习python第十周学习总结
    数据存储演变史数据存储的演变其实是对数据的存储格式和数据存储的位置进行演变的过程:1.文本文件基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无......