Oracle中lectXX_valfromdual什么意思呢?
说明
今天看别⼈的代码,遇见了⼀条sql lect ctg_fault_list_val from dual 不懂意思,然后就研究了下
dual :是oracle 数据库中的虚拟表,并不是真实存在的
XX_id_q:这个是我们创建序列时⾃定义的⼀个序列名称
ctg_fault_list_val:这个是取出序列的下⼀个值,序列可以⽤户id⽣成器,每次我们都通过序列取到不同的值,并且不会重复序列基本⽤法
序列: 是oacle提供的⽤于产⽣⼀系列唯⼀数字的数据库对象。
(1)⾃动提供唯⼀的数值
(2)共享对象
(3)主要⽤于提供主键值
(4)将序列值装⼊内存可以提⾼访问效率
创建序列
要有创建序列的权限
create quence 或 create any quence
创建序列的语法
CREATE SEQUENCE quence //创建序列名称
[INCREMENT BY n]//递增的序列值是n 如果n是正数就递增,如果是负数就递减默认是1
[START WITH n]//开始的值,递增默认是minvalue 递减是maxvalue
[{MAXVALUE n | NOMAXVALUE}]//最⼤值
[{MINVALUE n | NOMINVALUE}]//最⼩值
[{CYCLE | NOCYCLE}]//循环/不循环
[{CACHE n | NOCACHE}];//分配并存⼊到内存中
NEXTVAL 返回序列中下⼀个有效的值,任何⽤户都可以引⽤
CURRVAL 中存放序列的当前值
NEXTVAL 应在 CURRVAL 之前指定,⼆者应同时有效
⽰例
Create quence qEmp increment by1 start with1 maxvalue 3 minvalue 1
土味生日祝福Cycle cache 2;
//先nextval 后 currval
郑重什么val from dual;
Select qEmp.currval from dual;
Cache<max-min/increment
解释
青楼怨
{
Create创建
Sequence 序列 qEmop 序列名称
Increment by步长
Stat with1开始值
Maxvalue 最⼤值
Minvalue 最⼩值
Cycle 循环 nocycle 不循环
Cache 缓存 Cache<maxvalue-minvalue/increment by//⼀般不采⽤缓存Nextvalue 下⼀个
Currval 当前值
}
实例应⽤
你在干什么的英文
实现id的⾃动递增
create table cdpt(
id number(6),
name varchar2(30),
constraint pk_id primary key(id)
);
Create quence q_cdpt
Increment by1
下巴两侧长痘痘是什么原因Start with1
Maxvalue 999999
Minvalue 1
Nocycle
nocache
inrt into cdpt values(val,’feffefe’);
commit;
lect*from cdpt;萧洁云
使⽤序列
会产⽣裂缝
l 序列在下列情况下出现裂缝:
• 回滚
• 系统异常
多个表同时使⽤同⼀序列
//修改序列的增量, 最⼤值, 最⼩值, 循环选项, 或是否装⼊内存
alter SEQUENCE quence //创建序列名称
[INCREMENT BY n]//递增的序列值是n 如果n是正数就递增,如果是负数就递减默认是1 [START WITH n]//开始的值,递增默认是minvalue 递减是maxvalue
[{MAXVALUE n | NOMAXVALUE}]//最⼤值
[{MINVALUE n | NOMINVALUE}]//最⼩值
[{CYCLE | NOCYCLE}]//循环/不循环
[{CACHE n | NOCACHE}];//分配并存⼊到内存中
修改序列的注意事项
l 必须是序列的拥有者或对序列有 ALTER 权限
l 只有将来的序列值会被改变
l 改变序列的初始值只能通过删除序列之后重建序列的⽅法实现
删除序列
l 使⽤DROP SEQUENCE 语句删除序列
l 删除之后,序列不能再次被引⽤
Alter quence qEmp maxvalue 5;
动态说说>语文月考总结val from dual;