oracel 中序列

一 、 前言

  1. 做过web开发的人员基本上都知道,数据库表中的主键值有的时候我们会用数字类型的并且自增。这样mysql、sql server中的都可以使用工具创建表的时候很容易实现。但是oracle中没有设置自增的方法,一般情况我们会使用序列和触发器来实现主键自增的功能。下面这面文章主要介绍序列。

二、 什么是序列:

  1. 序列: 是oacle提供的用于产生一系列唯一数字的数据库对象。

三 、 序列的作用:

  1. 自动提供唯一的数值
  2. 共享对象
  3. 主要用于提供主键值
  4. 将序列值装入内存可以提高访问效率

四、 创建序列

  1. 要有创建序列的权限 create sequence 或 create any sequence
  2. 创建序列的语法:

    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 当前值}
    
  3. CYCLE和NOCYCLE 表示当序列生成器的值达到限制值后是否循环。CYCLE代表循环,NOCYCLE代表不循环。如果循环,则当递增序列达到最大值时,循环到最小值;最小值为1。对于递减序列达到最小值时,循环到最大值。如果不循环,达到限制值后,继续产生新值就会发生错误。
  4. MINVALUE定义序列生成器能产生的最小值。选项NOMAXVALUE是默认选项,代表没有最小值定义,这时对于递减序列,系统能够产生的最小值是?10的26次方;对于递增序列,最小值是1。
  5. MAXVALUE 定义序列生成器能产生的最大值。选项NOMAXVALUE是默认选项,代表没有最大值定义,这时对于递增Oracle序列,系统能够产生的最大值是10的27次方;对于递减序列,最大值是-1。
  6. CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。 缓存选项会造成数据丢失,当实例异常关闭时。

五 、 实例

    //实例应用//实现id的自动递增//第一步create table cdpt(id number(6),name varchar2(30),constraint pk_id primary key(id));Create sequence seq_cdptIncrement by 1Start with 1Maxvalue 999999Minvalue 1Nocyclenocacheinsert into cdpt values(seq_cdpt.nextval,’feffefe’);commit;select * from cdpt;

六 、 什么时候出现裂缝

  1. 事务回滚
  2. 系统异常
  3. 多个表同时使用一个序列

七、怎么修改序列

  1. 语法

    //修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存
    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}];//分配并存入到内存中例如:Alter sequence seqEmp maxvalue 5;Select seqEmp.nextval from dual;
    
  2. 修改序列的注意事项
    1. 必须是序列的拥有者或对序列有ALTER权限
    2. 只有将来的序列值会被改变
    3. 改变序列的初始值只能通过删除序列之后重建序列的方法实现

八、 怎么删除序列

  1. 使用drop sequence 语句删除序列
  2. 删除之后序列不能再次被使用

oracel 中序列相关推荐

  1. Oracle中序列(Sequence)详解

    Oracle中序列(Sequence)详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用 ...

  2. oracle获取序列并赋值,Oracle中序列的使用

    数据库设计的三大范式第一条就是独立的表结构中必须有唯一主键来标识表中数据.在以往微软的SQL Server(duo版本)平台上.手动编码实现表中主键.并设定为自增列是极其简单.编码如下: typeid ...

  3. python中序列和列表区别细菌真菌病毒_生物信息中的Python 02 | 用biopython解析序列...

    上一篇文章生物信息中的Python 01 | 从零开始处理基因序列自己造轮子实现了序列的基础操作,但是在Python的世界里,一项工作只要重复的次数多了,那么一定就会有大神来开发相应的包来解决,这个包 ...

  4. python中有序序列是什么意思_Python中序列是什么

    在Python中,序列是有序集的通用术语.Python中有七种类型的序列. 这些是: 1.Unicode字符串 2.字符串 3.Lists 4.元组 5.字节数组 6.缓冲区 7.Xrange对象 在 ...

  5. Python中序列的累积计算

    [小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python中序列的累积计算 cumsum()函数 选择题 以下python代码输出什么? ...

  6. mysql中序列的使用,在MySQL中使用序列的简单教程

    序列是一组整数1,2,3,...中生成的顺序.序列中经常使用的数据库,因为很多应用都需要一个表中的每一行包含一个独特的值和序列提供了一个简单的方法来产生.本章介绍如何使用MySQL中的序列. 使用自动 ...

  7. Oracle数据库中序列(SEQUENCE)的用法详解

    http://database.51cto.com/art/201108/280742.htm 在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为 ...

  8. 使用RNN解决NLP中序列标注问题的通用优化思路

    /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author: 张俊林 (想更系统地学习深度学习知识?请参考:深度学习枕边书) 序列标注问题应该说是自然语言处理中最常见的问题 ...

  9. mysql 序列_MySql中序列的应用和总结

    Mysql中的序列主要用于主键,主键是递增的字段,不可重复. Mysql与Oracle不同的是,它不支持原生态的sequence,需要用表和函数的组合来实现类似序列的功能. 1.首先创建序列的主表 / ...

最新文章

  1. 水下目标检测算法赛(36w奖金池)
  2. EndNote 高校_【工具】EndNote使用小记
  3. local sandbox html里的script tag是如何load到memory里的
  4. c语言n次方怎么输入_C语言实现斐波拉契数列
  5. electron 打包把node代理服务打包进去_专题:让C++给node做技术加持(三)编译electron本地模块踩坑记
  6. 解决git push远程分支错误
  7. JavaScript数组的某些操作(一)
  8. C#中IntPtr打印输出
  9. 目前下载VS2017你可能会遇到这个坑
  10. 一起学爬虫(Python) — 07
  11. Exp2 后门原理与实践 ——20164316张子遥
  12. 图片加水印怎么加?教你一个好操作的办法
  13. 【移动端网页布局】移动端网页布局基础概念 ① ( 移动端浏览器 | 移动端屏幕分辨率 | 移动端网页调试方法 )
  14. [stm32 HAL库] RTC和BKP驱动
  15. 什么是“ Windows任务的主机进程”,为什么我的PC上运行着这么多主机?
  16. 实操:怎么从数据切入私域长效运营?可以这样做
  17. 编译和安装gdb源码详细步骤介绍
  18. 我对社交电商的了解与看法
  19. 使用Tesseract+OpenCV+Python进行光学字符识别 (OCR)
  20. 计算机应用能力考试和软考哪个有用,软考中级哪个最容易过 哪个含金量最高...

热门文章

  1. 10分钟学会理解和解决MySQL乱码问题
  2. 2012 Multi-University Training Contest 3
  3. ASP实例:利用缓存提高数据显示效率
  4. 如何计算和控制好项目开发成本?
  5. 对的调用没有匹配的函数_前端开发之——函数、事件、js对象
  6. 在Linux环境下给php添加mbstring扩展
  7. 2018 前端面试题(不定期更新)
  8. 几款流行的HTML5 UI 框架比较
  9. 背水一战 Windows 10 (20) - 绑定: DataContextChanged, UpdateSourceTrigger, 对绑定的数据做自定义转换...
  10. Spring(二)IOC底层实现原理