当前位置:网站首页>数据库-序列
数据库-序列
2022-06-26 14:52:00 【EbowTang】
参考ORACLE总结,但是测试参考KES和ORACLE
1、序列的创建:
CREATE SEQUENCE SEQUENCE_NAME
INCREMENT BY n
START WITH n
MAXVALUE n | NOMAXVALUE
MINVALUE n | NOMINVALUE
CYCLE | NOCYCLE
CACHE n | NOCACHE | ORDER;相关参数说明:
INCREMENT BY n 序列递增幅度
START WITH n 序列开始值
MAXVALUE n 序列最大值
MINVALUE n 序列最小值
CYCLE 序列序号循环使用
CACHE n 序列序号缓存个数,默认20个,默认NOORDER模式。
CACHE n ORDER 在RAC中共用一个SEQUENCE的CACHE,NOORDER不共用CACHE。
数据字典:
user_sequences, all_sequences, dba_sequences
SELECT * FROM USER_SEQUENCES
WHERE SEQUENCE_NAME = 'SEQUENCE_NAME';2、序列的管理:
可以修改的值:增幅、最大值、最小值、循环使用、缓存。
不能修改的值:开始值。(oracle限制,KES没有)
修改开始值必须删除重建。
ALTER SEQUENCE SEQUENCE_NAME
INCREMENT BY n
MAXVALUE n
MINVALUE n
CYCLE
CACHE n;删除以及授权:
DROP SEQUENCE sequence_name;
GRANT SELECT ON sequence_name TO user_name;
GRANT ALTER ANY SEQUENCE;3、序列的使用:
NEXTVAL 下一个序号
CURRVAL 当前的序号
例:
SELECT sequence_name.nextval FROM dual;
SELECT sequence_name.currval FROM dual;发生回滚后,序列不能回滚,会发生序列号不连续的情况。
4、Cache设置注意事项:
NOCACHE不会造成序列跳号,但是并发性能比较差,会造成row cache lock等待事件。
在RAC环境中SEQUENCE CACHE适量的设置大一点,避免序列竞争导致,如每秒会有上万次SELECT,
并发量很大cache需要设置为100甚至1000以上。
不同cache模式的等待事件:
NOCACHE --> row cache lock
CAHCE+NOORDER --> enq: SQ-contention(SQ lock)
CACHE+ORDER(RAC) --> DFS look handle(SV lock)
5,序列的小结
,5.1 思维导图

5.2 测试代码
在KES测试通过,在ORACLE部分代码验证过(应该也能通过)
-------------------------------------
----序列的测试
-------------------------------------
--最大值10的序列
-- Create sequence
drop sequence if exists SEQ_TEST;--删除序列
create sequence SEQ_TEST
maxvalue 9999
minvalue 1000
start with 1000
increment by 2
cache 20
nocycle;
--dual是Oracle中的⼀个伪表,利⽤这个伪表可以设置或查看序列,
--或者是调⽤⼀些内置的函数,可以很⽅便的时候。
--序列调用 产生一个新的序列,再执行一次数值就会变
select SEQ_TEST.nextval from dual
--查看当前序列的值,反复执行数字不会变
select SEQ_TEST.currval from dual
--从这个SEQ_TEST序列中选取下一个数字:
SELECT nextval('SEQ_TEST');
---------------------------------
-----------查看序列视图信息---------
---------------------------------
--序列的视图查看
select * from user_sequences;
select * from all_sequences;
select * from dba_sequences;
---通过序列视图查看指定的信息
select min_value,max_value,increment_by,last_number,cycle_flag
from dba_sequences
where sequence_name = 'SEQ_TEST';
--创建实验表
drop TABLE if exists student;--删除序列
CREATE TABLE student (
stu_nmb number(8),
stu_name char(8) not null,
gender varchar2(2),
age number(2), --检查约束
class varchar2 (40) not null,
email varchar2 (30),
sdate DATE,
---执行约束
constraint pk_nmb primary key (stu_nmb),
constraint ck_check check ( gender in ('男','女')),
constraint ck_age check (age BETWEEN 18 AND 30), --检查约束
constraint uq_student_email UNIQUE (email)
);
--用来生成主键序列
INSERT INTO student VALUES(nextval('SEQ_TEST'),'张德田','男',19,'高三第6班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'吴海峰','男',18,'高三第1班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'章德正','男',20,'高三第8班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'宋义','女',20,'高三第3班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'张华乐','女',19,'高三第4班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'黎文','女',19,'高三第4班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'吉祥','男',21,'高三第7班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'向玲','女',19,'高三第1班','[email protected]',SYSDATE);
INSERT INTO student VALUES(nextval('SEQ_TEST'),'梅田田','女',21,'高三第7班','[email protected]',SYSDATE);
select stu_nmb,stu_name
from student;
--结果
stu_nmb stu_name
1014 张德田
1018 吴海峰
1020 章德正
1022 宋义
1024 张华乐
1026 黎文
1028 吉祥
1030 向玲
1032 梅田田
----修改视图
--将原视图的下列属性进行修改
--请注意合理性,下列修改不合理,因为start with 1000
alter sequence seq_test
minvalue 2000
maxvalue 8000
increment by 2
cycle
--对于oracle而言,下列也是不合理的---不支持直接变更起始值
--oracle报错ORA-02283: 无法变更启动序列号
alter sequence seq_test
minvalue 1000
start with 3100
maxvalue 7000
increment by 5
cycle ;
------
--不合理,因为起始值是3100
alter sequence seq_test
minvalue 1000
maxvalue 3000
increment by 5
cycle ;
-----
--1.更改increment为一个你想让序列增加到的值
alter sequence seq_xxrs increment by 1000;
--2.执行一次查询序列的语句
select seq_xxrs.nextval from dual;
--3.然后将increment改回来
alter sequence seq_xxrs increment by 1;
--此时的序列的起始值值就增大了。
---通过序列视图查看指定的信息
select min_value,max_value,increment_by,cycle_flag,start_value
from all_sequences
where sequence_name = 'SEQ_TEST';边栏推荐
- 【云原生】 ”人人皆可“ 编程的无代码 iVX 编辑器
- 详解C语言编程题:任意三条边能否构成三角形,输出该三角形面积并判断其类型
- 乐鑫 AWS IoT ExpressLink 模组达到通用可用性
- redis集群的重新分片与ASK命令
- 15 BS object Node name Node name String get nested node content
- View触摸分析
- MySQL master-slave replication and read-write separation
- R语言glm函数逻辑回归模型、使用epiDisplay包logistic.display函数获取模型汇总统计信息(自变量初始和调整后的优势比及置信区间,回归系数的Wald检验的p值)、结果保存到csv
- R language GLM function logistic regression model, using epidisplay package logistic The display function obtains the summary statistical information of the model (initial and adjusted odds ratio and
- One copy ten, CVPR oral was accused of plagiarizing a lot, and it was exposed on the last day of the conference!
猜你喜欢
杜老师说网站更新图解

Minister of investment of Indonesia: Hon Hai is considering establishing electric bus system and urban Internet of things in its new capital

View触摸分析

获取两个dataframe的交并差集

乐鑫 AWS IoT ExpressLink 模组达到通用可用性

RestCloud ETL解决shell脚本参数化

【雲原生】 ”人人皆可“ 編程的無代碼 iVX 編輯器

15 bs对象.节点名称.节点名称.string 获取嵌套节点内容

Mathematical modeling of war preparation 30 regression analysis 2

Notes on writing questions in C language -- table tennis competition
随机推荐
Attention meets Geometry:几何引导的时空注意一致性自监督单目深度估计
【soloπ】adb连接单个多个手机
Kubernetes的pod
Authoritative announcement on the recruitment of teachers in Yan'an University in 2022
使用卷积对数据进行平滑处理
Restcloud ETL extraction de données de table de base de données dynamique
SAP gui 770 下载
Cluster addslots establish a cluster
15 bs对象.节点名称.节点名称.string 获取嵌套节点内容
Sikuli 基于图形识别的自动化测试技术
Idea shortcut key
文献1
Pytorch深度学习代码技巧
子查询的使用
Informatics Olympiad all in one 1400: count the number of words (string matching)
R language uses the aggregate function of epidisplay package to split numerical variables into different subsets based on factor variables, calculate the summary statistics of each subset, and use agg
网上股票开户安不安全?谁给回答一下
程序分析与优化 - 8 寄存器分配
Halcon C# 设置窗体字体,自适应显示图片
[async/await] - the final solution of asynchronous programming