GaussDB数据库SQL系列-序列的使用

目录

一、前言

二、GaussDB数据库中的序列

1、语法(CREATE SEQUENCE)

2、注意事项

三、GaussDB数据库中的示例

1、示例一:创建普通序列

2、示例二:创建与表关联的序列

四、小结

一、前言

在数据库管理中,序列(SEQUENCE)是一种重要的数据库对象,它为生成唯一标识符提供了方便。 序列的值是按照一定规则自增的整数。因为自增所以不重复,因此说Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。GaussDB是华为公司开发的一款关系型数据库管理系统,它提供了CREATE SEQUENCE命令,帮助用户轻松创建和管理数据库序列。本次主要以CREATE SEQUENCE为内容做一简单介绍。

二、GaussDB数据库中的序列

通过序列使某字段成为唯一标识符的方法有两种:

  • 一种是声明字段的类型为序列整型,由数据库在后台自动创建一个对应的Sequence。
  • 另一种是使用CREATE SEQUENCE自定义一个新的Sequence,然后将nextval('sequence_name')函数读取的序列值,指定为某一字段的默认值,这样该字段就可以作为唯一标识符。

1、语法(CREATE SEQUENCE)

CREATE [ LARGE | TEMPORARY | TEMP ] SEQUENCE name [ MINVALUE minvalue | NO MINVALUE | NOMINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE] [ START [ WITH ] start ] [ INCREMENT [ BY ] increment ][ CACHE cache ] [ [ NO ] CYCLE | NOCYCLE ] [ OWNED BY { table_name.column_name | NONE } ];

主要参数说明:

  • start指定序列的起始值。缺省值:对于递增序列为minvalue,递减序列为maxvalue。
  • increment指定序列的步长。一个正数将生成一个递增的序列,一个负数将生成一个递减的序列。缺省值为1。
  • MINVALUE minvalue | NO MINVALUE| NOMINVALUE执行序列的最小值。如果没有声明,则递增序列的缺省值为1,递减序列的缺省值为-263-1。
  • MAXVALUE maxvalue | NO MAXVALUE| NOMAXVALUE执行序列的最大值。如果没有声明,则递增序列的缺省值为263-1,递减序列的缺省值为-1。
  • cache为了快速访问,而在内存中预先存储序列号的个数。
  • CYCLE用于使序列达到maxvalue或者minvalue后可循环并继续下去。如果声明了NO CYCLE,则在序列达到其最大值后任何对nextval的调用都会返回一个错误。NOCYCLE等价于NO CYCLE。缺省值为NO CYCLE。若定义序列为CYCLE,则不能保证序列的唯一性。
  • OWNED BY将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。需要注意的是,通过指定OWNED BY,仅仅是建立了表的对应列和sequence之间关联关系,并不会在插入数据时在该列上产生自增序列。

2、注意事项

  • Sequence是一个存放等差数列的特殊表。这个表没有实际意义,通常用于为行或者表生成唯一的标识符。
  • 如果给出一个模式名,则该序列就在给定的模式中创建,否则会在当前模式中创建。序列名必须和同一个模式中的其他序列、表、索引、视图或外表的名称不同。
  • Sequence默认最大值为2^63-1,如果使用了Large标识则最大值可以支持到2^127-1。
  • 被授予CREATE ANY SEQUENCE权限的用户,可以在public模式和用户模式下创建序列。
  • 序列的起始值和增量值必须是整数。
  • 序列名称必须唯一。
  • 尽量避免在序列名称中包含特殊字符。
  • 使用NEXTVAL和CURRVAL函数时,必须指定序列名称。
  • 使用ALTER SEQUENCE和DROP SEQUENCE命令时,必须指定序列名称等。

三、GaussDB数据库中的示例

在GaussDB中,CREATE SEQUENCE提供了一种序列生成器,它可以自动为新插入的行生成唯一的序列号。这个序列号可以用于主键、外键或者唯一约束,确保数据的完整性和一致性。那么,如何使用GaussDB CREATE SEQUENCE呢? 参考如下示例:

1、示例一:创建普通序列

--创建一个名为mysequence的序列,起始值为1,增量为1
CREATE SEQUENCE mysequence START WITH 1 INCREMENT BY 1;--使用NEXTVAL函数用于获取下一个序列值
SELECT NEXTVAL('mysequence');--CURRVAL函数用于获取当前序列值
SELECT CURRVAL('mysequence');--删除mysequence序列
DROP SEQUENCE mysequence;

2、示例二:创建与表关联的序列

--创建序列,并通过NEXTVAL('sequence_name')函数指定为某一字段的默认值。
--第一步:创建序列
CREATE SEQUENCE mysequence1 START 100 CACHE 20;--第二步:创建一个表
CREATE TABLE test_3(id int NOT NULL ,c_date date
);--将序列serial的归属列变为 test_3.id。
ALTER SEQUENCE mysequence1 OWNED BY test_3.id;--插入数据并查看结果
INSERT INTO test_3(id,c_date) VALUES(NEXTVAL('mysequence1'),current_timestamp);
INSERT INTO test_3(id,c_date) VALUES(NEXTVAL('mysequence1'),current_timestamp);
INSERT INTO test_3(id,c_date) VALUES(NEXTVAL('mysequence1'),current_timestamp);
SELECT * FROM test_3;--删除序列和表。
DROP SEQUENCE mysequence1 cascade;
DROP TABLE test_3;

更多信息参见官方资料:

CREATE SEQUENCE_云数据库 GaussDB_主备版_3.x版本_SQL参考_SQL语法_华为云

CREATE SEQUENCE_云数据库 GaussDB_分布式_3.x版本_SQL参考_SQL语法_华为云

四、小结

GaussDB 中的CREATE SEQUENCE不仅简单易用,而且具有很高的效率。它可以避免手动分配和管理序列号,大大提高了数据管理的效率。同时,由于序列号的唯一性,它也可以确保数据的完整性和一致性。  总的来说,GaussDB中的CREATE SEQUENCE是一个强大的数据管理工具,它可以帮助您有效地管理和使用数据。

——结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/198182.shtml

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

相关文章

Nginx的使用

Nginx的使用 一、配置前端项目访问二、配置SSL证书1、正常配置2、配置报错 三、配置域名反向代理1、简单代理2、带参数代理3、指定后缀域名跳转4、访问反向代理域名的静态资源5、配置静态资源访问(1)、将域名配置到小程序,获得TXT文件&#x…

leetcode:对称二叉树

题目描述 题目链接:101. 对称二叉树 - 力扣(LeetCode) 题目分析 题目中说至少存在一个节点,所以我们只需要对比左右子树 写一个子函数对比左右子树:用递归的思路,左子树的左子树和右子树的右子树对比&…

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B

2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B 目录 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-B 需要环境或者解析可以私信 (二)A 模块基础设施设置/安全加固(200 分&…

使用Python Flask搭建Web问答应用程序并发布到公网远程访问

使用Python Flask搭建web问答应用程序框架,并发布到公网上访问 文章目录 使用Python Flask搭建web问答应用程序框架,并发布到公网上访问前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程…

打开游戏提示缺少(或找不到)XINPUT1_3.DLL怎么解决

在电脑使用过程中,我们可能会遇到一些错误提示,其中之一就是xinput1_3.dll丢失。那么,xinput1_3.dll是什么文件?它对电脑有什么影响?本文将详细介绍xinput1_3.dll丢失的原因以及五个详细的解决方法,帮助大家…

帮企多城市分站系统源码+关键词排名优化推广 附带完整的搭建教程

随着市场竞争的加剧,企业对于网络营销的需求越来越多元化。传统的单一网站已经无法满足企业在网络营销方面的需求,因此我们需要开发一套多城市分站系统,以满足企业在不同地区、不同行业的需求。同时,我们还结合了关键词排名优化推…

外包干了2个月,技术明显退步了...

先说一下自己的情况,大专生,19年通过校招进入广州某软件公司,干了接近5年的功能测试,今年11月份,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

UE4 双屏分辨率设置

背景: 做了一个UI 应用,需要在双屏上进行显示。 分辨率如下:3840*1080; 各种折腾,其实很简单: 主要是在全屏模式的时候 一开始没有选对,双屏总是不稳定。 全屏模式改成:Windows 之…

JS加密/解密之HOOK实战

之前的章节有介绍过Javascript的Hook相关的基础知识,相信大部分人也知道了什么是Hook,今天我们来讲一下Hook实战,实际的运用。 0x1.事上练 // 程序员们基本都喜欢简单精辟 直入主题 不喜欢咬文嚼字 我们先直接上代码 var _log console.log…

23、什么是卷积的 Feature Map?

这一节介绍一个概念,什么是卷积的 Feature Map? Feature Map, 中文称为特征图,卷积的 Feature Map 指的是在卷积神经网络(CNN)中,通过卷积这一操作从输入图像中提取的特征图。 上一节用示意动图介绍了卷积算…

web自动化 -- pyppeteer

由于Selenium流行已久,现在稍微有点反爬的网站都会对selenium和webdriver进行识别,网站只需要在前端js添加一下判断脚本,很容易就可以判断出是真人访问还是webdriver。虽然也可以通过中间代理的方式进行js注入屏蔽webdriver检测,但…

MySQL笔记-第04章_运算符

视频链接:【MySQL数据库入门到大牛,mysql安装到优化,百科全书级,全网天花板】 文章目录 第04章_运算符1. 算术运算符2. 比较运算符3. 逻辑运算符4. 位运算符5. 运算符的优先级拓展:使用正则表达式查询 第04章_运算符 …

​ 海外服务器创新高地:亚马逊云科技树立云计算韧性标杆

云计算的大潮中,众多企业对云服务器的需求与日俱增。但随之而来的就是云服务器的运行对于企业的业务的重要性也越来越高。想象一下,如果在全球范围内运行的服务和应用程序遭遇意外中断,从而产生的重大影响可能会给一些企业带来严重损失。因此…

如何将整个文件内容加载到富文本控件?

众所周知,富文本控件,Rich Text Control,用来呈现文本内容的一个控件,功能上相对记事本来说更加丰富,但又不及 Word。 但,我们的目标又不是开发另外一个 Word。 我们可以使用 EM_STREAMIN 消息将整个文件…

ubuntu安装tomcat并配置前端项目

1.1查找 # 先更新 sudo apt update # 查找 apt search jdk1.2安装 sudo apt install openjdk-8-jdk1.3验证 java -version 2.安装tomcat 下载链接:Apache Tomcat - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi下载这个&…

vue+electron问题汇总

1. Vue_Bug Failed to fetch extension, trying 4 more times 描述:项目启动时报错 解决:注释图片中内容 2. Module not found: Error: Can’t resolve ‘fs’ in 描述:项目启动报错 解决:vue.config.js中添加图中数据 3.导入…

基于Java SSM框架实现汽车在线销售系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现汽车在线销售系统演示 摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识&a…

Leetcode每日一题学习训练——Python3版(从二叉搜索树到更大和树)

版本说明 当前版本号[20231204]。 版本修改说明20231204初版 目录 文章目录 版本说明目录从二叉搜索树到更大和树理解题目代码思路参考代码 原题可以点击此 1038. 从二叉搜索树到更大和树 前去练习。 从二叉搜索树到更大和树 给定一个二叉搜索树 root (BST),请…

〖大前端 - 基础入门三大核心之JS篇㊸〗- DOM事件对象的方法

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

高铁乘务员简历12篇

想要在高铁乘务员职位的求职中脱颖而出,顺利进入心仪的高铁乘务员岗位,以下是12篇专业的高铁乘务员个人简历案例,无论您是初入行业的新手还是有一定工作经验的乘务员参考这些简历,让您的求职之路更加顺畅。 高铁乘务员简历模板下…