Oracle数据库之序列
Oracle数据库之序列(sequence)
序列是一个计数器,它并不会与特定的表关联。我们可以通过创建Oracle序列和触发器实现表的主键自增。序列的用途一般用来填充主键和计数。
一、创建序列
语法结构:
CREATE SEQUENCE [ schema. ] sequence_name
[ { INCREMENT BY | START WITH } integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| ...
]...
;
完整语法结构见:http://docs.oracle.com/database/121/SQLRF/statements_6017.htm#SQLRF01314
说明:
- schema:模式,即用户名称
- sequence_name:序列名称
- INCREMENT BY:定义序列的步长,如果省略,则默认为1,如果出现负值,则代表Oracle序列的值是按照此步长递减的。
- START WITH:定义序列的初始值,默认为1。
- MAXVALUE:序列生成器能产生的最大值。NOMAXVALUE是默认选项,代表没有最大值定义。
- MINVALUE:序列生成器能产生的最小值。NOMINVALUE是默认选项,代表没有最小值定义。
- CYCLE和NOCYCLE:当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值,最小值为1。对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
- CACHE:定义存放序列的内存块的大小,默认为20,相当于预加载。缓冲部分序列计数以便更快获取序列值,可以改善序列的性能,但缓存选项可能会造成数据丢失。NOCACHE表示不缓冲。
示例:
CREATE SEQUENCE customers_seq
START WITH 1000
INCREMENT BY 1
NOCACHE
NOCYCLE;
二、删除序列
语法:
DROP SEQUENCE [ schema. ] sequence_name ;
示例:
DROP SEQUENCE customers_seq;
三、使用序列
序列有两个属性能够获取序列的值:
CURRVAL:返回序列的当前值。
NEXTVAL:返回序列下一个值。
示例:.
INSERT INTO customers(id) VALUES (customers_seq.NEXTVAL);
SELECT customers_seq.CURRVAL FROM dual;
四、修改序列
语法:
ALTER SEQUENCE [ schema. ] sequence_name
{ INCREMENT BY integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| ...
} ...
;
完整语法结构见:http://docs.oracle.com/database/121/SQLRF/statements_2014.htm#SQLRF00817
注意,不能修改序列的初始值,否则会报ORA-02283。如果需要修改初始值,先删除序列再重新创建序列设定初始值。
示例:
ALTER SEQUENCE customers_seq
MAXVALUE 1500;
ALTER SEQUENCE customers_seq
CYCLE
CACHE 5;
五、序列查看
SELECT * FROM USER_SEQUENCES;
SELECT * FROM ALL_SEQUENCES;
SELECT * FROM DBA_SEQUENCES;
Oracle数据库之序列的更多相关文章
- Oracle数据库中序列(SEQUENCE)的用法详解
Oracle数据库中序列(SEQUENCE)的用法详解 在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了 ...
- Oracle数据库游标,序列,存储过程,存储函数,触发器
游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理, ...
- Oracle数据库中序列用法讲解
序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一 ...
- Oracle数据库,序列、索引、视图
一.序列:生成自动增长(或减少)的整数值 Sequences中新建 调取: th_test.nextval 获取下一个值 th_test. currval获取当前值 二.视图:在物理表的基础上定义的虚 ...
- Oracle 数据库中序列结合触发器实现主键自增长
一.数据表名称为T_OFFICE,其主键为PID(number类型) 二.首先为数据表的PID字段创建序列 序列名称:S_T_OFFICE_PID 序列详细内容: 三.创建相应的触发器 触发器名称:T ...
- Oracle数据库之四
删除记录的SQL语句 delete from 表名[where 条件];(DML) 注意: 如果没有where子句,代表全部删除(慎用). delete也必须commit后才能生效 truncate也 ...
- Oracle数据库学习 视图、序列及存储过程
视图(View) 视图也被称作虚表,也就是虚拟的表,是一组数据的逻辑表示. 视图对应一个select语句,结果集被赋予一个名字,也就是视图的名字. 视图本身不包含任何数据,它只是包含映射到基表的一个查 ...
- oracle 数据库中的序列
序列是什么,通俗点说,序列就是按照一定顺序进行排列,序列会自动给你递增,生成唯一的序列号: oracle数据库不同于sqlServer数据库,oracle数据库中是没有自增长列,使用的是sequenc ...
- oracle数据库--序列(sequence)
一个问题: 在某张表中,存在一个id列(整数),我们希望在添加记录的时候,该列从1开始,自动的增长,怎么处理? 解决方式:oracle是利用"序列"(sequence)来完成的. ...
随机推荐
- SQL Server T-SQL高级查询1
高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student; --all 查询所有 select all sex from ...
- Web分析日志分析2
http://www.docin.com/p-649515490.html http://wenku.baidu.com/link?url=kB-83fbl1Zc3Y6U2BYLj-lKMWShe8Z ...
- Microsoft Detours 2.1简介
http://blog.163.com/qcb_163/blog/static/9545466420117851038971/ Microsoft Detours 2.1简介 2011-08-0817 ...
- Android URI简介
就Android平台而言,URI主要分三个部分:scheme, authority and path.其中authority又分为host和port.格式如下:scheme://host:port/p ...
- Extjs4 中在指定光标处插入值
var rulearea = Ext.getCmp(文本域Id); var rulevalue = rulearea.getValue();// 获取文本textarea 里面的值 var start ...
- SDUT2087 离散事件模拟-银行管理(模拟)
题目链接. 分析: 模拟. 果然模拟什么的最讨厌了. 用e1,e2分别记录队列1,队列2的结束时间. 每个结点的s记录开始时间,e一开是记录逗留时间,进队列的时候,改成离开的时间.时刻记录总时间就可以 ...
- Makefile中的wildcard和patsubst
makefile 里的函数跟它的变量很相似——使用的时候,你用一个 $ 符号跟开括号,函数名,空格后跟一列由逗号分隔的参数,最后用关括号结束. 例如,在 GNU Make 里有一个叫 'wild ...
- TCP协议下Socket的基础编程类型
套接字的基本操作有: 创建(socket).命名(bind).侦听(listen).连接(accept).关闭(shutdown).发送(send).接受(recv). 下面逐个分析: 一.创建(so ...
- Java学习日记-2.2 增强后的switch-case
switch-case语句的基本格式 switch(expression){ case condition1: ... break; case condition2: ... break; case ...
- 一不小心写了个bootstrap风格下拉控件 JqueryUI + bootstrap
受够了EasyUI的封闭,Bootstrap虽然华丽但是功能太渣,闲着无聊写个下拉控件玩玩吧,不喜勿喷哈... 第一步:先设计下我的下拉控件的样子 1.既然是bootstrap风格的,我想应该是这样的 ...