序列的使用

目录

序列的创建

序列的使


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.mzph.cn/news/764690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚远景科技-Hardware SPICE与ISO26262,硬件SPICE与功能安全的映射

硬件SPICE(Software Process Improvement and Capability Determination for Hardware Engineering)与ISO26262的映射主要涉及将硬件工程过程的改进模型与ISO 26262系列标准中的硬件开发进行对应和关联。这种映射有助于组织在进行硬件工程过程改进时&…

laravel(源码笔记)控制器解析过程

控制器 isControllerActionrunController parseControllerCallback Str::parseCallback($this->action[‘uses’]); 可能返回ControlleractionCallback或者只有回调callbackgetController parseControllerCallback()[0]返回控制器实例 getControllerMethod parseControlle…

Ubuntu安装GPU驱动

ubuntu-drivers autoinstall 中间提示nvidia 470 有戏啊 nvidia-smi

蓝桥杯第192题 等差数列 C++ Java Python

目录 题目 思路和解题方法 复杂度 空间 时间 c 代码 Java 版本(仅供参考) Python 版本(仅供参考) 题目 思路和解题方法 首先,输入n和数组a的值。对数组a进行排序。计算数组a中相邻元素之间的差的最大公约数&…

android AMS的面试题目

问题: 描述AMS(ActivityManagerService)在Android系统中的角色和作用是什么? 答案: AMS是Android系统中的核心服务之一,它主要负责管理应用程序的四大组件(Activity、Service、BroadcastReceive…

对象与继承

创建一个对象的几种方式 new Object()或者字面量{},或者__proto__; let obj {name: obj,sayName: function () {console.log(this.name)} } // obj ---> Object.prototype ---> null ​// 可以通过 __proto__ 字面量属性将新创建对象的[[Prototype]] 指向另…

分库分表实战

先了解分库分表的一些概念,参考:【MySQL】MySQL分库分表详解[通俗易懂]-腾讯云开发者社区-腾讯云 然后觉得哔哩哔哩里讲的挺好的,要试一下:1、海量数据冲击下的MySQL优化方案_哔哩哔哩_bilibili 看到了P5 还有博客:…

基于springboot的mysql实现读写分离

前言: 首先思考一个问题:在高并发的场景中,关于数据库都有哪些优化的手段?常用的有以下的实现方法:读写分离、加缓存、主从架构集群、分库分表等,在互联网应用中,大部分都是读多写少的场景,设置两个库,主库和读库,主库的职能是负责写,从库主要是负责读…

在存在代理的主机上,为docker容器配置代理

1、配置Firefox的代理 (只配置域名或者ip,前面不加http://) 2、为容器中的Git配置代理 git config --global http.proxy http://qingteng:8080 3、Git下载时忽略证书校验 env GIT_SSL_NO_VERIFYtrue git clone https://github.com/nginx/nginx.git 4、docker的…

IDEA | 资源文件中文乱码问题解决

问题 IDEA打开资源文件,显示乱码问题。 解决方案 1、电脑是mac,点击IDEA->【Preferences】->【Editor】->【File Encodings】 2、选择【Properties Files】中的UTF-8,并勾选Transparent native-to-ascii conversion。 3、最后点击…

创龙教仪基于瑞芯微3568的ARM Cortex A-55教学实验箱 适用于人工智能 传感器 物联网等领域

适用课程 Cortex-A55 ARM嵌入式实验箱主要用于《ARM 系统开发》、《ARM 应用开发》《物联网通信技术》、《嵌入式系统设计》、《移动互联网技术》、《无线传感器网络》、《物联网设计方法与应用》、《人工智能》等课程。 适用专业 Cortex-A55 ARM嵌入式实验箱主要面向电子信…

微服务day05(中) -- ES索引库操作

索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 2.1.mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型,…

深入理解 C#和Unity中的Null

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C++,go等语言开发经验,mysql,mongo,redis等数据库,设计模式和网络库开发经验,对战棋类,回合制,moba类页游,手游有丰富的架构设计和开发经验。 (谢谢…

Qt教程 — 3.7 深入了解Qt 控件: Layouts部件

目录 2 如何使用Layouts部件 2.1 QBoxLayout组件-垂直或水平布局 2.2 QGridLayout组件-网格布局 2.3 QFormLayout组件-表单布局 在Qt中,布局管理器(Layouts)是用来管理窗口中控件位置和大小的重要工具。布局管理器可以确保窗口中的控件在…

使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓,并自动部署到服务器启动服务

文章目录 使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓,并自动部署到服务器启动服务1、功能实现原理大家可以看我之前的两篇文章2、打包vue项目和打包咱们的Java项目过程差不多相同,大家可以看着上面的Java打包过程进行实验,下面是v…

解决VM重新打开后找不到共享文件夹的问题

我的问题是之前按照网上的文档设置了vm的共享文件夹,能成功使用,但是问题是下一次打开之后就找不到了,虚拟机设置里共享文件夹是启用的,文件夹也完成了映射网络驱动器,但是就是找不到共享文件夹 解决方法:…

GraphQL入门之变更输入类型

前一篇文章介绍了变更操作,在创建 User 对象的时候,只传递了 name 和 email 参数,但是如果属性太多或者创建对象的时候只需要部分必选参数,直接把属性都当成参数就不合适了,这里 GraphQL 提供了 Input Type 参数来解决…

关于在vue中有时候表格的位置不对是怎么个情况

今天在写代码的时候多了一个<div>标签&#xff0c;导致表格的位置大小不对 <template><div><tr><td><input type"checkbox" checked"true" /></td><td>xxxxx</td><td><button class"…

搜索二维矩阵

题目链接 搜索二维矩阵 题目描述 注意点 每行中的整数从左到右按非严格递增顺序排列每行的第一个整数大于前一行的最后一个整数1 < matrix.length, matrix[0].length < 100 解答思路 先二分查找找到target所处的行&#xff0c;找到行后再二分查找找到target所处的列…

C语言预编译#pragma宏的作用

在嵌入式编程中&#xff0c;#pragma 指令具有非常重要的作用&#xff0c;因为它允许开发者在不同的编译器之间传达特定的编译指令。由于嵌入式编程通常与硬件紧密相关&#xff0c;且资源有限&#xff0c;这些指令可以帮助开发者更有效地利用可用资源&#xff0c;优化程序&#…