当前位置: 首页 > news >正文

序列的使用

目录

序列的创建

序列的使


Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

在许多数据库之中都会存在有一种数据类型 — 自动增长列,它能够创建流水号。如果想在 Oracle 中实现这样的自动增长列,可以使用序列的方式完成

序列的创建

create sequence 序列名称
[MAXVALUE 最大值 | NOMAXVALUE]
[MINVALUE 最小值 | NOMINVALUE]
[INCREMENT BY 步长 ] [START WITH 开始值 ]
[CYCLE | NOCYCLE]
[CACHE 缓存个数 | NOCACHE] ;

MAXVALUE :可选项,定义序列的最大值

MINVALUE :可选项,定义序列的最小值

START WITH 开始值:可选项,定义序列的开始值

INCREMENT BY 步长:可选项,定义序列每次增加值

CYCLE :可选项,表示当序列增加到最大值或者减少到最小值的时候,重新从开始值继续

CACHE :可选项,表示是否产生序列号预分配,并存储在内存中

序列属于数据库对象的创建过程,属于 DDL 的分类范畴。对于序列而言,创建之后一定会在数据字典中保存

CREATE SEQUENCE myseq ;

 上面代码创建一个序列,名字为 myseq,所有参数都取默认值

既然序列的对象信息会在数据字典中保存,那么现在就可以查询序列的数据字典

SELECT * FROM user_sequences ;

SEQUENCE_NAME :序列名称,本次为 MYSEQ

MIN_VALUE :当前序列的最小值,本次为 1

MAX_VALUE :当前序列的最大值,本次为“1.0000E+28”

INCREMENT_BY :每次序列增长的步长内容

CY :是否为循环序列,本次为“N”

OR :是否需要排序

CACHE_SIZE :缓存个数,默认为 20 个

LAST_NUMBER :最后的数值。现在序列已经创建成功了,如果要想使用序列则可以使用如下的两个伪列完成

nextval :取得序列下一个内容,每一次调用序列的值都会增长

currval :表示取得序列的当前内容,每一次调用序列不会增长,如果要想使用此伪列,那么在使用之前必须首先使用 nextval 取得内容才可以。

只有运行了 nextval 之后才表示内容真正可以使用 

序列的使

CREATE TABLE mytab(id		NUMBER ,name	VARCHAR2(50)  ,CONSTRAINT pk_id PRIMARY KEY(id)
) ;

 此时的数据表与原始相比没有任何区别,但是在数据增加的时候,由于 id 属于一个主键列,所以可以利用序列来生成 id 的内容

INSERT INTO mytab(id,name) VALUES (myseq.nextval,'HELLO') ;

以上的操作是序列在实际开发中使用最多的一种情况,但是从序列的创建语法来讲,并不是这么简单,所以下面需要对序列进行进一步的分析

那么首先需要来解决缓存的作用是什么

在序列的操作过程中,为了保证序列操作的性能问题,会利用缓存在用户未使用到指定的序列值时自动将内容创建好,这样用户在使用序列中就不是一起创建的了,从而达到性能的提升

但是缓存本身会存在一个丢号的问题,如果数据库关闭了,那么序列的内容就可能无法连续了,称此为丢号问题

但是以上所创建的只是标准的序列,而实际上序列也可以创建一些特殊情况

DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq 
INCREMENT BY 2 ;

上面代码中,“DROP SEQUENCE myseq ”表示删除序列的代码,然后创建一个新的序列,步长为 2

DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq 
INCREMENT BY 2
START WITH 100000 ;

上面代码中,创建的序列开始值为 100000,增加的步长为 2。

在序列的使用过程中还可以创建一个循环序列,例如希望序列可以在 1、3、5、7、9 之间循环显示,所以此时就需要设置序列的最大值 9、最小值 1,而且设置为循环

DROP SEQUENCE myseq ;
CREATE SEQUENCE myseq 
INCREMENT BY 2 START WITH 1 
MINVALUE 1 MAXVALUE 9
CYCLE NOCACHE;

从实际情况来说,序列的使用往往都不需要这么复杂,生成一个流水号就够了

http://www.lryc.cn/news/323532.html

相关文章:

  • golang kafka sarama 源码解析
  • Flutter知识点整理
  • 现代游戏引擎架构
  • 深度学习:复杂工业场景下的复杂缺陷检测方法
  • CSDN个人简介优化 html font属性
  • 从哈希桶角度看 unordered_map 与 unordered_set 的实现
  • 飞天使-k8s知识点27-kubernetes温故知新2-deployment
  • 手机网页关键词视频爬虫采集软件可导出视频分享链接|视频无水印批量下载工具
  • 基于OpenCV的图像处理案例之图像矫正(Python)
  • 创建linux虚拟机系统:(安装Ubuntu镜像文件,包含语言设置、中文输入法、时间设置)
  • 3.0 V-22V 宽输入电压,高效率异步升压芯片-ZCC5429
  • Sphinx + Readthedocs 避坑速通指南
  • IPP-7010 表面贴装 90 度混合耦合器
  • 25.2 微服务Dubbo
  • CI/CD环境搭建
  • API调试管理工具Postman下载及操作介绍
  • vue集成百度地图,实现关键字搜索并自定义覆盖物,保存成静态图片
  • Java中的Stream流
  • 前端UI怎么防止用户反复提交?
  • OpenHarmony游戏应用程序-实现的一个手柄游戏
  • Redis+Lua脚本+SpringAOP实现接口限流
  • 【wpf应用8】如何让WPF Grid控件根据屏幕尺寸自动调整
  • 掌握ChatGPT:如何用AI撰写高质量论文
  • 平衡隐私与效率,Partisia Blockchain 解锁数字安全新时代
  • 【JavaScript】NPM常用指令指南
  • k8s-多容器Pod、容器保护策略、宽限期、最大生命周期、嵌入式脚本、多容器Pod、资源监控工具
  • 机器学习——线性回归(头歌实训)
  • Echarts 利用多X轴实现未来15天天气预报
  • [数据结构初阶]二叉树
  • matlab和stm32的安装环境。能要求与时俱进吗,en.stm32cubeprg-win64_v2-6-0.zip下载太慢了