Oracle 中select XX_id_seq.nextval from dual 什么意思呢?
说明
今天看别人的代码 ,遇见了 一条sql select ctg_fault_list_id_seq.nextval from dual 不懂意思,然后就研究了下
dual :是oracle 数据库中的虚拟表,并不是真实存在的
XX_id_seq:这个是我们创建序列时自定义的一个序列名称
ctg_fault_list_id_seq.nextval:这个是取出序列的下一个值,序列可以用户id生成器,每次我们都通过序列取到不同的值,并且不会重复
序列基本用法
序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。
(1)自动提供唯一的数值
(2)共享对象
(3)主要用于提供主键值
(4)将序列值装入内存可以提高访问效率
创建序列
要有创建序列的权限
create sequence 或 create any sequence
创建序列的语法
CREATE SEQUENCE sequence //创建序列名称
[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 sequence seqEmp increment by 1 start with 1 maxvalue 3 minvalue 1 Cycle cache 2; //先nextval 后 currval Select seqEmp.nextval from dual; Select seqEmp.currval from dual; Cache<max-min/increment
解释
{
Create 创建
Sequence 序列 seqEmop 序列名称
Increment by 步长
Stat with 1 开始值
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 sequence seq_cdpt Increment by 1 Start with 1 Maxvalue 999999 Minvalue 1 Nocycle nocache insert into cdpt values(seq_cdpt.nextval,’feffefe’); commit; select * from cdpt;
使用序列
会产生裂缝
l 序列在下列情况下出现裂缝:
• 回滚
• 系统异常
多个表同时使用同一序列
//修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存
alter SEQUENCE sequence //创建序列名称
[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 sequence seqEmp maxvalue 5; Select seqEmp.nextval from dual;
Oracle 中select XX_id_seq.nextval from dual 什么意思呢?的更多相关文章
- oracle中 SELECT INTO 和INSERT INTO ... SELECT区别
在Oracle中,将一张表的数据复制到另外一个对象中.通常会有这两种方法:insert into select 和 select into from. 前者可以将select 出来的N行(0到任意数 ...
- Oracle中select使用别名
1 .将字段用as转换成别名. 2 .直接在字段的名字后面跟别名. 3 .在字段后面用双引号引起的别名. 我的朋友 大鬼不动 最近访客 fhwlj kochiyas 大極星 Alz__ deser ...
- 论MySQL中如何代替Oracle中select into new_table from old_table
v_receipt warehouse_receipt%ROWTYPE;-- 这里创建表类型,v_receipt复刻了warehouse_receipt的类型(相当于拥有了所有相同的字 ...
- Oracle中select 1和select *的区别
转自:https://www.linuxidc.com/Linux/2010-05/26202.htm 创建myt表并插入数据,如下: create table myt(name varchar2,c ...
- Oracle中Select语句完整的执行顺序
oracle Select语句完整的执行顺序: .from 子句组装来自不同数据源的数据: .where 子句基于指定的条件对记录行进行筛选: .group by子句将数据划分为多个分组: .使用聚集 ...
- Oracle中select子句取值先于order by子句执行而导致rownum伪列未按预期取值导致的问题
有这么一张表: create table hytb( id number(4,0) not null primary key, padid nvarchar2(20) not null, inputd ...
- oracle中select clob的返回类型
当select的字段是clob类型的数据时,但是数据长度在2000字节到4000字节时,默认转为long类型. 所以当用insert into select的时候,预期插入的是clob类型,但是报or ...
- oracle中dual的使用
dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下:1.查看当前用户,可以在 SQL Plus中执行下面语句select ...
- ORACLE中伪表 dual 的用法
dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下: 1.查看当前用户,可以在 SQL Plus中执行下面语句 sel ...
随机推荐
- 【python基础】setproctitle的安装与使用
前言 setproctitle模块允许设置进程名称. 安装 pip install setproctitle 使用 参考 1. setproctitle: 完
- Centos7中rc.local设置springboot项目开机自启动
在Centos7下,rc.local文件,开机默认是不执行的 1.进入rc.local中 路径如下图
- git clean用法
git clean用法 想批量删除branch中新加的文件(untracked files),,git reset --hard不行- 首先确认要删除的文件 git clean -fd -n ...
- 如何自己手动修改win10磁贴背景颜色?
前言 当我们安装完应用后,可以选择将应用图标固定到"开始"屏幕,于是就会产生一个磁贴,有的应用会自带背景颜色,有的则是默认的主题色.其实这个只不过是应用本身没有没有去适配win10 ...
- GitLabCICD
CI/CD是什么 CI全名Continuous Integration,啥意思?就是我们经常听到的持续集成概念.当开发每天会提交多次代码到主干上,会做一些重复性的动作时,就可以用持续集成环境来操作.有 ...
- 同类控件的统一操作(以TCHECKBOX为例)
https://www.cnblogs.com/gaodu2003/archive/2008/12/15/1355355.html Procedure UnCheck; var i: integer; ...
- DISPLAY FORMAT 語法
- 部署.Net Core APi+Vue 到 linux centos 服务器(一)
部署.Net Core APi+Vue 到 linux centos 服务器(一) 前言:项目采用的是 .net core 作为接口,vue作为前端. 此时需要把整个项目架设到linux centos ...
- robotframework_酷我音乐_That Girl
*** Settings *** Library Selenium2Library *** Test Cases *** music # 打开浏览器 Open Browser https://www. ...
- ElasticSearch监控工具 - cerebro
官方地址:https://github.com/lmenezes/cerebro 需要有java环境 下载地址:https://github.com/lmenezes/cerebro/releases ...