Oracle数据库如何实现自增-序列Sequence介绍(适合小白)
Oracle数据库中的Sequence是一种特殊的数据库对象,可以生成一组等间隔的数值,常用于为表中的行自动生成序列号。也常用于主键自增的情况。
下面我将以小白的视角带大家介绍下Oracle数据库序列Sequence:
一、创建简单序列
创建简单序列语法:
create sequence序列名称
注意:我们在刚建立序列后,无法提取当前值,只有先提取下一个值时才能再次提取当前值。
提取下一个值: NEXTVAL返回序列的下一个值
select 序列名称.nextval from dual
提取当前值: CURRVAL返回序列的当前值
select 序列名称.currval from dual
DUAN表介绍:
DUAL表就是Oracle与数据字典自动创建的一张表,这张表是一个单行单列的表,这个表只有1列:DUMMY,数据类型为VERCHAR2(1),DUAL表中只有一个数据'X',Oracle有内部逻辑保证DUAL表中永远只有一条数据。DUAL表主要是用来选择系统变量或是求一个表达式的值。
二、创建复杂序列
创建复杂序列语法:
CREATE SEQUENCE sequence_name
[INCREMENT BY n] //递增的序列值是n如果n是正数就递增,如果是负数就递减 默认是1
[START WITH n] // 开始的值,递增默认是minvalue 递减是maxvalue
[MAXVALUE n | NOMAXVALUE] //最大值
[MINVALUE n | NOMINVALUE] //最小值
[CYCLE | NOCYCLE] // 循环/不循环
[CACHE n | NOCACHE]; //分配并存入到内存中
- sequence_name: 序列的名称。
- INCREMENT BY n: 序列每次递增的步长(默认为1)。
- START WITH n: 序列的起始值(默认为1)。
- MAXVALUE n: 序列的最大值。
- NOMAXVALUE: 指定没有最大值限制。
- MINVALUE n: 序列的最小值。
- NOMINVALUE: 指定没有最小值限制。
- CYCLE: 当达到最大值或最小值时,序列将循环(重新开始)。
- NOCYCLE: 当达到最大值或最小值时,序列将停止递增。
- CACHE n: 在内存中缓存n个序列值,以提高性能(默认为20)。
- NOCACHE: 不在内存中缓存序列值。
三、创建序列,使用主键自增案例
3.1 创建序列
创建一个序列名为USER_SEQUENCE,开始值为1,每次递增1,最大值为999999999999999999999999,不循环,不缓存的序列。
CREATE SEQUENCE USER_SEQUENCESTART WITH 1INCREMENT BY 1MAXVALUE 999999999999999999999999NOCACHENOCYCLE;
3.2 应用Sequence
Sequence生成的唯一值可以在INSERT语句中使用。例如:
INSERT INTO table_name (id, name)
VALUES (USER_SEQUENCE.NEXTVAL, 'John Doe');
使用sequence_name.NEXTVAL可以获取下一个Sequence值。这样就可以实现主键自增啦。
- 第一次使用
seqName.NEXTVAL返回的是序列的起始值;随后的seqName.NEXTVAL会自动增加你定义的INCREMENT BY的值,然后返回增加后的值作为序列值。 seqName.NEXTVAL初始化之后才能使用seqName.CURRVAL
3.3 查看Sequence信息
SELECT USER_SEQUENCE.CURRVAL
FROM dual;
通过sequence_name.CURRVAL可以查看当前Sequence的值。
四、修改序列
类似创建序列,不过需要注意的是,不支持修改序列起始值。
示例:
CREATE SEQUENCE USER_SEQUENCESTART WITH 1INCREMENT BY 10MAXVALUE 999999999999999999999999NOCACHENOCYCLE;
五、使用序列
一旦创建了序列,就可以使用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数据库中的Sequence是一种特殊的数据库对象,可以生成一组等间隔的数值,常用于为表中的行自动生成序列号。Sequence和视图一样,并不占用实际的存储空间,只是在数据字典中保存它的定义信息。
Sequence的定义语法如下:
CREATE SEQUENCE [user.]sequence_name [increment by n] [start with n] [maxvalue n | nomaxvalue] [minvalue n | nominvalue];
Sequence的主要用途是生成表的主键值,也可以在插入语句中引用,或通过查询检查当前值,或使序列增至下一个值。
Oracle数据库中的Sequence是一种非常有用的数据库对象,它可以帮助生成一组等间隔的数值,并且常常被用于为表中的行自动生成序列号。以下是关于Oracle数据库序列的详细总结:
-
定义和使用:
- Sequence的定义是通过
CREATE SEQUENCE语句完成的。在定义时,需要指定一个唯一的名称(sequence_name)以及一些可选的参数。 INCREMENT BY指定了序列的增量值。默认情况下,序列会每次增加1。START WITH指定了序列的起始值。默认情况下,序列会从最小的可能值开始。MAXVALUE和MINVALUE分别指定了序列的最大值和最小值。如果未指定,则最大值和最小值会根据序列的增量和当前值自动计算。
- Sequence的定义是通过
-
主要用途:
- 生成主键值:由于Sequence可以生成唯一的数值序列,因此常常被用于生成表的主键值。通过将Sequence与表的主键列关联,可以确保每个行都有一个唯一的主键值。
- 插入语句引用:在插入数据时,可以使用Sequence的当前值作为表中的某些列的值。这样可以避免手动指定值,并确保数据的顺序性。
- 查询当前值:通过查询Sequence的当前值,可以了解下一个将被生成的值。这有助于在需要时进行适当的操作,例如在插入数据之前获取主键值。
-
内置函数:
- Sequence还提供了一些内置函数,可以用于查询和控制Sequence的行为。例如,
NEXTVAL函数用于获取下一个序列值,CURRVAL函数用于获取当前序列值,NEXT NUMBERS函数用于获取指定数量的连续序列值。
- Sequence还提供了一些内置函数,可以用于查询和控制Sequence的行为。例如,
-
注意事项:
- Sequence是数据库对象,因此不占用实际的存储空间。它们只是在数据字典中保存定义信息。
- Sequence可以由多个用户并发使用,但每个用户只能获取一次Sequence的下一个值。如果需要确保并发访问时的唯一性,可以使用数据库锁或其他机制来控制并发访问。
- Sequence的最大值和最小值是可选的,但如果指定了最大值或最小值,则它们应该足够大或小以容纳所有可能的序列值。否则,如果超过了最大值或最小值,Sequence将停止生成新的值。
-
总结:
Oracle数据库中的Sequence是一种非常方便且实用的数据库对象,它可以生成一组等间隔的数值序列,常被用于为表中的行自动生成主键值等唯一标识符。通过了解Sequence的定义、使用、主要用途、内置函数以及注意事项,开发人员可以更好地利用Sequence来简化数据库操作和管理。
相关文章:
Oracle数据库如何实现自增-序列Sequence介绍(适合小白)
Oracle数据库中的Sequence是一种特殊的数据库对象,可以生成一组等间隔的数值,常用于为表中的行自动生成序列号。也常用于主键自增的情况。 下面我将以小白的视角带大家介绍下Oracle数据库序列Sequence: 一、创建简单序列 创建简单序列语法…...
ke14--10章-2JDBC例子
驱动forName,创建连接对象getConnection要三个参数,执行String sql "INSERT INTO等",创建执行SQL语句的PreparedStatement对象进行setString,然后执行preStmt.executeUpdate(); 为什么要preStmt conn.prepareStatement(sql);conn DriverManager.getConnection(url…...
04数据平台Flume
Flume 功能 Flume主要作用,就是实时读取服务器本地磁盘数据,将数据写入到 HDFS。 Flume是 Cloudera提供的高可用,高可靠性,分布式的海量日志采集、聚合和传输的系统工具。 Flume 架构 Flume组成架构如下图所示: A…...
Redis--13--缓存一致性问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 缓存一致性问题1、先更新缓存,再更新DB方案二:先更新DB,再更新缓存方案三:先删缓存,再写数据库推荐1&…...
12.7作业
1. #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//***********窗口相关设置***********//设置窗体大小this->resize(540,410);this->setFixedSize(540,410);//取消菜单栏this->setWindowFlag(Qt::FramelessWindowHint);/…...
ssl什么是公钥和私钥?
公钥(Public Key)与私钥(Private Key)是通过加密算法得到的一个密钥对(即一个公钥和一个私钥,也就是非对称加密方式)。公钥可对会话进行加密、验证数字签名,只有使用对应的私钥才能解…...
github首次将文件合到远端分支,发现名字不是master,而是main
其中,暂存区和本地仓库的信息都存储在.git目录中 在自己的github上实践 1、刚开始,git clone gitgithub.com:lingze8678/my_github.git到本地 2、在克隆后的代码中加入一个pdf文件 3、在git bash中操作(当项目中有文件更改和删除ÿ…...
RTX 40 系彻底摆烂,NVIDIA 让三年老卡焕发第二春
AMD 前段时间发布的 RX 6750GRE 12/10G 两块新卡属实给了市场一波小小震撼。 有同学要说了,这不就是两年前的 RX 6700 系换皮嘛,典型的旧饭重恰它凭啥能火? 无他,性能合格,价格实惠,主打一个高性价比。 别…...
ELK技术栈介绍及简单使用实例
1. ELK技术栈介绍 引言 在当今数据驱动的世界里,有效地管理和分析大量日志数据变得至关重要。这里我们将深入探讨ELK技术栈,这是一种流行的日志管理解决方案,它结合了三个开源项目:Elasticsearch、Logstash和Kibana。ELK技术栈因…...
基于Java健身房课程管理系统
基于Java健身房课程管理系统 功能需求 1、课程信息管理:系统需要能够记录和管理所有课程的详细信息,包括课程名称、教练信息、课程时间、课程地点、课程容量等。管理员和教练可以添加、编辑和删除课程信息。 2、会员信息管理:系统需要能够…...
DAPP开发【02】Remix使用
系列文章目录 系列文章在DAPP开发专栏 文章目录 系列文章目录使用部署测试网上本地项目连接remix本地项目连接remix 使用 创建一个新的工作空间 部署测试网上 利用metaMask连接测试网络 添加成功,添加时需要签名 即可进行编译 即可部署 本地项目连接remix 方…...
大华DSS S2-045 OGNL表达式注入漏洞复现
0x01 产品简介 大华DSS安防监控系统平台是一款集视频、报警、存储、管理于一体的综合安防解决方案。该平台支持多种接入方式,包括网络视频、模拟视频、数字视频、IP电话、对讲机等。此外,该平台还支持多种报警方式,包括移动侦测、区域入侵、越线报警、人员聚集等。 0x02 漏…...
大数据之HBase(二)
Master详细架构 位置:namenode实现类:HMaster组成 负载均衡器:通过meta了解region的分配,通过zk了解rs的启动情况,5分钟调控一次分配平衡元数据表管理器:管理自己的预写日志,如果宕机ÿ…...
前后端数据传输格式(下)
作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 上篇主要复习了HTTP以及…...
mysql pxc高可用离线部署(三)
pxc学习流程 mysql pxc高可用 单主机 多主机部署(一) mysql pxc 高可用多主机离线部署(二) mysql pxc高可用离线部署(三) mysql pxc高可用 跨主机部署pxc 本文使用docker进行安装,主机间通过…...
XXL-JOB 日志表和日志文件自动清理
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…...
常用sql记录
备份一张表 PostgreSQL CREATE TABLE new_table AS SELECT * FROM old_table;-- 下面这个比上面好,这个复制表结构时,会把默认值、约束、注释都复制 CREATE TABLE new_table (LIKE old_table INCLUDING ALL) WITHOUT OIDS; INSERT INTO new_table SELE…...
设备温度和振动综合监测:温振一体式传感器的优点和应用
随着工业设备的复杂性和自动化程度的提高,对设备状态监测的需求也日益增加。温振一体式传感器作为一种集振动和温度监测于一体的传感器,具备多项优势,因此在工业设备状态监测领域得到广泛应用。 温振一体式传感器基于振动传感器和温度传感器的…...
彻底解决ModuleNotFoundError: No module named ‘exceptions‘【Bug完美解决】
文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结心得项目场景: 根据本文可找到bug原因并彻底解决**ModuleNotFoundError: No module named ‘exceptions‘**Bug 报错: E:\Anconda\python.exe c:\Users\24190\PycharmProjects\pythonProject4py尝试 gong…...
yarn和npm的区别
2023-12-8 yarn和npm的区别 是常用的包管理工具,用于node.js项目中安装、管理、和更新依赖项 有以下几个区别: 性能和速度:在包的安装和下载方面,yarn比npm更快速,yarn通过并行下载和缓存等优化策略,可以…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
