说明

今天看别人的代码 ,遇见了 一条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 什么意思呢?的更多相关文章

  1. oracle中 SELECT INTO 和INSERT INTO ... SELECT区别

    在Oracle中,将一张表的数据复制到另外一个对象中.通常会有这两种方法:insert into select  和 select into from. 前者可以将select 出来的N行(0到任意数 ...

  2. Oracle中select使用别名

    1 .将字段用as转换成别名. 2 .直接在字段的名字后面跟别名. 3 .在字段后面用双引号引起的别名.   我的朋友 大鬼不动 最近访客 fhwlj kochiyas 大極星 Alz__ deser ...

  3. 论MySQL中如何代替Oracle中select into new_table from old_table

    v_receipt         warehouse_receipt%ROWTYPE;-- 这里创建表类型,v_receipt复刻了warehouse_receipt的类型(相当于拥有了所有相同的字 ...

  4. Oracle中select 1和select *的区别

    转自:https://www.linuxidc.com/Linux/2010-05/26202.htm 创建myt表并插入数据,如下: create table myt(name varchar2,c ...

  5. Oracle中Select语句完整的执行顺序

    oracle Select语句完整的执行顺序: .from 子句组装来自不同数据源的数据: .where 子句基于指定的条件对记录行进行筛选: .group by子句将数据划分为多个分组: .使用聚集 ...

  6. Oracle中select子句取值先于order by子句执行而导致rownum伪列未按预期取值导致的问题

    有这么一张表: create table hytb( id number(4,0) not null primary key, padid nvarchar2(20) not null, inputd ...

  7. oracle中select clob的返回类型

    当select的字段是clob类型的数据时,但是数据长度在2000字节到4000字节时,默认转为long类型. 所以当用insert into select的时候,预期插入的是clob类型,但是报or ...

  8. oracle中dual的使用

    dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下:1.查看当前用户,可以在 SQL Plus中执行下面语句select ...

  9. ORACLE中伪表 dual 的用法

     dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下: 1.查看当前用户,可以在 SQL Plus中执行下面语句 sel ...

随机推荐

  1. spring boot 2X中@Scheduled实现定时任务及多线程配置

    使用@Scheduled 可以很容易实现定时任务 spring boot的版本 2.1.6.RELEASE package com.abc.demo.common; import org.slf4j. ...

  2. [QT] - HTTP文件传输服务器#工程源码

    简介: 大学时期学习弄的一个小软件,当初做的目的是在实验室的局域网内方便同学之间文件的传输,软件的几个功能截图如正文所示,文末提供工程源码文件,感谢支持! 功能截图: [ 打开软件,选择IP及需绑定的 ...

  3. RocketMQ 4.5.1 双主双从异步复制环境搭建

    基础环境 操作系统:CentOS7 实例:192.168.63.129,192.168.63.130,192.168.63.131,192.168.63.132 Java:jdk-8u191-linu ...

  4. Python之路【第二十六篇】:HTTP协议

    HTTP协议 一.HTTP概述 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则. HTTP就是通信规则 ...

  5. Shell编程学习(六)

    Shell 脚本条件测试与比较 条件测试方法综述 在Bash的各种条件结构和控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时也会与if等条件语句相结合,来完成测试判断,以减少程序运行的 ...

  6. vue SPA设计 history hash

    <body> <h3>Histort api</h3> <a class="api a">a,html</a> < ...

  7. springBoot入门到精通-Simple

    https://blog.csdn.net/zhiyikeji/article/details/84346189 1.springBoot前期准备 1.环境配置:jdk,maven 2.编写工具:st ...

  8. java之hibernate之组合主键映射

    1.在应用中经常会有主键是由2个或多个字段组合而成的.比如成绩表: 第一种方式:把主键写为单独的类 2.类的设计:studentId,subjectId ,这两个主键是一个组件.所以可以采用组件映射的 ...

  9. 使用jconsole分析内存情况

    http://www.cnblogs.com/dava/p/6686436.html

  10. 移动端的touch click事件的理解+点透

    移动端在touch上一共有4个事件 touchstart touchmove touchend touchcancel, touchcancel, 一般来说,它们执行的顺序为 touchstart - ...