使用数据库序列生成主键
一,什么是序列
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。其主要
的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。
创建序列需要CREATE SEQUENCE系统权限。序列的创建语法如下:
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}];
创建一个名称为:SEQUENCE_PARAMID 的序列:
CREATE SEQUENCE SEQUENCE_PARAMID
INCREMENT BY 1
MINVALUE 100001001
MAXVALUE 999999999
NOCYCLE
NOCACHE;
INCREMENT BY 用于定义序列的步长,如果省略,则默认为1,如果出现负值,则代表序列的值是按照此步长递减的。 START WITH
定义序列的初始值(即产生的第一个值),默认为1。 MAXVALUE
定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
MINVALUE定义序列生成器能产生的最小值 ...
在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为表中的行自动
生成序列号,产生一组等间隔的数值(类型为数字)。其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通
过查询检查当前值,或使序列增至下一个值。
二,使用序列生成主键
创建一个序列以后,如何使用这个序列,生成主键呢?我们获取序列的NEXTVAL就可以了,具体还要结合使用场景。
假如我们在INSERT语句中使用序列生成主键,只需要把SEQUENCE_PARAMID.NEXTVAL作为值,传递给主键字段就可以了。
假如我们想获取这个值,在程序中使用,我们可以通过下面的语句:SELECT SEQUENCE_PARAMID.NEXTVAL FROM DUAL;
和自增长的方式相比,序列具有更好的灵活性,可以根据需要设置的主键的长度。而使用自增长的方式,缺乏灵活
性,总是从1开始,每次递增1,我们没法控制。
三,实战演示
1,创建序列
CREATE SEQUENCE SEQUENCE_PARAMID
INCREMENT BY 1
MINVALUE 100001001
MAXVALUE 999999999
NOCYCLE
NOCACHE;
2,创建数据库表
CREATE TABLE YY_PRODUCT(
PRODUCT_ID VARCHAR(18) NOT NULL, -- 由于是主键,是唯一的,因此不用再加上unique关键字
PRODUCT_NAME VARCHAR(100) NOT NULL,
PRIMARY KEY(PRODUCT_ID) -- 把PRODUCT_ID 设置为主键
);
3,数据库插入操作
INSERT INTO YY_PRODUCT(
PRODUCT_ID,
PRODUCT_NAME
)
VALUES(
sequence_paramId.nextval,
'秋冬女士打底裤加绒加厚'
);
OK,一个简单的应用就是这样的,赶紧试试吧。这里补充说明一点,很多人会问,为什么你写SQL语句都用大写字母呢,
因为ORACLE和DB2数据库,在对SQL进行编译时,会把SQL转换成大写,我们都使用大写,数据库就减少了一个转换的
过程,这样可以提高SQL的执行效率。虽然对效率的提升不大,但相对而言,效率是有提升的。书写高效的SQL,必须要
从细节着手。正所谓:不积跬步无以至千里。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
“最近复购率一直在下降,我们的营销力度不小啊,为什么用户还是走了?” “是不是广告投放的用户质量不高?还是我们的产品问题 ...
2025-02-21以下文章来源于数有道 ,作者数据星爷 SQL查询是数据分析工作的基础,也是CDA数据分析师一级的核心考点,人工智能时代,AI能为 ...
2025-02-19在当今这个数据驱动的时代,几乎每一个业务决策都离不开对数据的深入分析。而其中,指标波动归因分析更是至关重要的一环。无论是 ...
2025-02-18当数据开始说谎:那些年我们交过的学费 你有没有经历过这样的场景?熬了三个通宵做的数据分析报告,在会议上被老板一句"这数据靠 ...
2025-02-17数据分析作为一门跨学科领域,融合了统计学、编程、业务理解和可视化技术。无论是初学者还是有一定经验的从业者,系统化的学习路 ...
2025-02-17挖掘用户价值本质是让企业从‘赚今天的钱’升级为‘赚未来的钱’,同时让用户从‘被推销’变为‘被满足’。询问deepseek关于挖 ...
2025-02-17近来deepseek爆火,看看deepseek能否帮我们快速实现数据看板实时更新。 可以看出这对不知道怎么动手的小白来说是相当友好的, ...
2025-02-14一秒精通 Deepseek,不用找教程,不用买资料,更不用报一堆垃圾课程,所有这么去做的,都是舍近求远,因为你忽略了 deepseek 的 ...
2025-02-12自学 Python 的关键在于高效规划 + 实践驱动。以下是一份适合零基础快速入门的自学路径,结合资源推荐和实用技巧: 一、快速入 ...
2025-02-12“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩 ...
2025-02-08活动介绍 为了助力大家在数据分析领域不断精进技能,我们特别举办本期打卡活动。在这里,你可以充分利用碎片化时间在线学习,让 ...
2025-02-071、闺女,醒醒,媒人把相亲的带来了。 我。。。。。。。 2、前年春节相亲相了40个, 去年春节相亲50个, 祖宗,今年你想相多少个 ...
2025-02-06在数据科学的广阔领域中,统计分析与数据挖掘占据了重要位置。尽管它们常常被视为有关联的领域,但两者在理论基础、目标、方法及 ...
2025-02-05在数据分析的世界里,“对比”是一种简单且有效的方法。这就像两个女孩子穿同一款式的衣服,效果不一样。 很多人都听过“货比三 ...
2025-02-05当我们只有非常少量的已标记数据,同时有大量未标记数据点时,可以使用半监督学习算法来处理。在sklearn中,基于图算法的半监督 ...
2025-02-05考虑一种棘手的情况:训练数据中大部分样本没有标签。此时,我们可以考虑使用半监督学习方法来处理。半监督学习能够利用这些额 ...
2025-02-04一、数学函数 1、取整 =INT(数字) 2、求余数 =MOD(除数,被除数) 3、四舍五入 =ROUND(数字,保留小数位数) 4、取绝对值 =AB ...
2025-02-03作者:CDA持证人 余治国 一般各平台出薪资报告,都会哀嚎遍野。举个例子,去年某招聘平台发布《中国女性职场现状调查报告》, ...
2025-02-02真正的数据分析大神是什么样的呢?有人认为他们能轻松驾驭各种分析工具,能够从海量数据中找到潜在关联,或者一眼识别报告中的数 ...
2025-02-01现今社会,“转行”似乎成无数职场人无法回避的话题。但行业就像座围城:外行人看光鲜,内行人看心酸。数据分析这个行业,近几年 ...
2025-01-31