在什么网站可以做外贸出口劳保鞋,科技大学全国排名,企业网站制作公司排名,邯郸市建设局网站政策目录
序列的创建
序列的使 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
在许多数据库之中都会存在有一种数据类型 — 自动增长列#xff0c;它能够创建流水号。如果想在 Oracle 中实现这样的自动增长列#xff0c;可…目录
序列的创建
序列的使 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.0000E28” 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;从实际情况来说序列的使用往往都不需要这么复杂生成一个流水号就够了