当前位置:网站首页>数据库-序列
数据库-序列
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';边栏推荐
- Idea shortcut key
- 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
- Unity C# 网络学习(十)——UnityWebRequest(二)
- R语言dplyr包intersect函数获取在两个dataframe中都存在的数据行、获取两个dataframe交叉的数据行
- Redis集群消息
- MongoDB系列之Window环境部署配置
- R语言使用epiDisplay包的aggregate函数将数值变量基于因子变量拆分为不同的子集,计算每个子集的汇总统计信息、使用aggregate.data.frame函数计算分组汇总统计信息
- Redis transaction and watch instruction
- Deploy the flask environment using the pagoda panel
- Use of subqueries
猜你喜欢

15 BS object Node name Node name String get nested node content

Unity 利用Skybox Panoramic着色器制作全景图预览有条缝隙问题解决办法
![[cloud native] codeless IVX editor programmable by](/img/10/7c56e46df69be6be522a477b00ec05.png)
[cloud native] codeless IVX editor programmable by "everyone"

RestCloud ETL解决shell脚本参数化

程序分析与优化 - 8 寄存器分配
杜老师说网站更新图解

Program analysis and Optimization - 8 register allocation

710. random numbers in the blacklist

关于 selenium.common.exceptions.WebDriverException: Message: An unknown server-side error 解决方案(已解决)

JVM 输出 GC 日志导致 JVM 卡住,我 TM 人傻了
随机推荐
使用卷积对数据进行平滑处理
RestCloud ETL与Kettle对比分析
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
Pytoch deep learning code skills
qt下多个子控件信号槽绑定方法
券商经理给的开户链接办理股票开户安全吗?我想开个户
RestCloud ETL抽取動態庫錶數據實踐
Excerpt from three body
Use abp Zero builds a third-party login module (II): server development
ETL过程中数据精度不准确问题
TCP 复位攻击原理
710. 黑名单中的随机数
Smoothing data using convolution
Redis集群消息
nvidia-smi 报错
房东拿租金去还房贷是天经地义的嘛
Informatics Olympiad 1405: sum and product of prime numbers (thinking problem)
View touch analysis
聊聊 RPA 方向的规划:简单有价值的事情长期坚持做
MySQL master-slave replication and read-write separation