返回顶部
首页 > 资讯 > 数据库 >Oracle中的小序列
  • 579
分享到

Oracle中的小序列

2024-04-02 19:04:59 579人浏览 八月长安
摘要

    话说序列很少人知道,因为Mysql和SQL Server都有自动增长字段(如ID主键自动增长的整数),而oracle却没有提供该用法,那么Oracle提供了更

    话说序列很少人知道,因为MysqlSQL Server都有自动增长字段(如ID主键自动增长的整数),而oracle却没有提供该用法,那么Oracle提供了更加灵活方便的策略-建立对象序列

    序列创建之后也是真真实实存在的,存在我们的磁盘上,并可以适用场合调用,序列总是从指定的长度开始,创建了之后可以按照指定步长进行累加,获得新的整数

    格式:

        create sequence emp_seq

    解释:

        创建一个序列,经常会用后缀seq来识别的

    格式:

        select object_name,object_type,status from user_objects where lower(object_name)='emp_seq';

    解释:

        竟然是正儿八经存在的对象,那么我们就可以通过数据库user_objects.

    格式:

        select sequence_name,min_value,max_value,increment_by from user_sequences where lower(sequence_name)='emp_seq';

    解释:

        用来查看我们创建的序列详细信息的,我们通过这个突然发现,还能看最大值,最小值,每次增长的步长.

  使用序列

      创建不用等于白创,那么使用前先要理解两个值,第一个currval,第二个nextval,从英语意思来看也很清晰,currval获取当前值,nextval获取下一个值,每次调用nextval都会使当前的序列增加单位步长(默认是1)

      调用序列这两个属性方法为seq.currval和seq.nextval,第一次使用序列,注意哈,要先调用next的属性,否则会报错的!

    格式:

        select emp_seq.nextval from dual;

    解释:

        我们用虚表dual来作为seq.nextval的from源,单行输出显示,这时候结果会是1.

  因为nextval的值是默认整张的,所以我们要保证表ID为主键

     格式:

        alter table student_name modify(id number primary key);

     格式:

        insert into student(id,name) values(emp_seq,'你好',);

     解释:

        假如student表中已有数据,我们插入id时候直接调用创建的序列你会惊奇的发现,失败!!!怎么回事,我们用select emp_seq.currval from dual;--发现数据是2,表中已经有2了当然不行了,怎么办也不可能把原有的数据(这一列删除掉),数据量小还可以用用,麻烦不说,显示不出序列的威力!下面我们介绍怎么设置初始值,加入本表id值已经1000条数据,我们让他从1000开始默认自增不是更好更高效!

     格式:

        drop sequence emp_seq;--删除原来的序列

        create sequence emp_seq start with 1001;

     解释:

        关键词start with 英语单词理解就是起始,那么意思就是说这个序列从1001开始自动增加(默认是1),插入的时候起始值是1001这样就可以根据我们的需求来使用序列,是不是很方便简单高效。

     格式:

        alter sequence emp_seq minvalue 8888;--修改最小值,注意当前修改的最小值不能大于原表中的数值(1001)!!

        alter sequence emp_seq maxvalue 9999;--修改最大只

    格式:

        alter sequence emp_seq increment by 5;

    解释:

        这就是我们前面一直给大家提到的默认增长的步调,就是说每一次插入id值默认自动增长多少。

        这个地方要注意设置最大值的问题,如果我最大值是20的话,从1开始每次增加5,最大只能到17,第四次就会超出最大值报错,这个的话大家一下就会明白。

        那么当我超出最大值就不可以,超出最大值就让他变成最小值,重新循环,可以的,我们是操控者,只要我们愿意,他就得可以,下面介绍一个关键字来替我们去执行这个操作。

    格式:

        create sequence emp_seq

        start with 5

        minvalue 1

        maxvalue 30

        incremenet by 1

        /--创建结束

    这时候我们算是吧前面学的参数都用上了,看一看其实也很简单啊,么点难度,我们开始多次nextval属性值,直到用currval看当前值最大值为30,当我们在使用nextval的时候就会神奇的发现变成了1.

    格式:

        alter sequence emp_seq cycle;--开启

        alter sequence emp_sql nocycle;--关闭

    缓存,什么是缓存,缓存是更好的读数据,速度比内存都要快很多,那么序列也有缓存,大量数据能有缓存效果对于数据库整体来说无疑是一个性能极大的提升。

        那么序列的cache,每次利用nextval,并非直接操作,而一次性获取多个列表的缓存,从缓存中抓取数值,而且依赖于currval和步长increment.

        定义存放序列的内存块的大小,预先生成序列号,存放在内存块当中,用下一个序号给予快速的相应,可以更快的响应,当一组用完之后会再生成一组,这样可以提高生成序列号的效率,默认值20。

        格式:

            alter sequence emp_seq cache 10;

        解释:

            设置缓存区大小

    昨天在工作中,在表中添加了一个序列id,当时数据量比较小,利用表格然后插入到数据表列,如果数据量这个方法不可行而且特别麻烦,那么今天学习的序列就派上了大用场!

    小序列并不简单,能用好、用到正地方确实要很大学问,希望大家一起学以致用多多实战。


您可能感兴趣的文档:

--结束END--

本文标题: Oracle中的小序列

本文链接: https://lsjlt.com/news/51303.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle中的小序列
        话说序列很少人知道,因为Mysql和sql server都有自动增长字段(如ID主键自动增长的整数),而Oracle却没有提供该用法,那么Oracle提供了更...
    99+
    2024-04-02
  • Oracle中的序列SEQUENCE详解
    一、序列介绍 Oracle的序列是一种数据库对象,主要作用是用来产生唯一值。序列被创建以后可以通过数据字典找到序列对象,因此序列可以被多个对象共享。 二、创建序列 序列使用CREAT...
    99+
    2024-04-02
  • Oracle中序列(Sequence)详解
    序列(Sequence)是Oracle数据库中的一种对象,用于生成唯一的递增或递减的数字序列。序列可以用于生成主键值或者其他需要唯一...
    99+
    2023-09-23
    Oracle
  • Oracle系列:(24)序列
    什么是序列【Sequence】(1)类似于MySQL中的auto_increment自动增长机制,但Oracle中无auto_increment机制(2)是oracle提供的一个产生唯一数值型值的机制(3)...
    99+
    2024-04-02
  • Oracle sequence序列
    sequence含义Oracle数据库提供了sequence对象,由系统提供自增长的序列号,通常用于数据库数据记录的自增长主键或序号的地方;创建语法格式及说明Create  sequencemys...
    99+
    2024-04-02
  • Oracle序列sequence
    这篇文章将为大家详细讲解有关Oracle序列sequence,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 ...
    99+
    2024-04-02
  • Oracle中怎么构造序列
    本篇文章给大家分享的是有关Oracle中怎么构造序列,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Oracle构造序列的方法随着版本一直在变化...
    99+
    2024-04-02
  • oracle中创建序列及序列补零实例详解
    oracle中创建序列及序列补零实例详解 我们经常会在在DB中创建序列: -- Create sequence create sequence COMMON_SEQ minvalue 1 maxva...
    99+
    2024-04-02
  • Oracle中的序列SEQUENCE有什么特点
    序列是一个数据库对象,用于生成唯一的递增或递减的数字序列。 序列可以被多个表共享,每个表可以使用序列来生成唯一的主键值。 序列的值...
    99+
    2024-04-09
    Oracle
  • 如何在Oracle中创建序列
    在Oracle中创建一个序列,可以使用如下的SQL语句: CREATE SEQUENCE sequence_name START W...
    99+
    2024-04-09
    Oracle
  • Oracle系列:(27)小结
    (01)删除到回收站的表,通过什么技术可以还原  闪回(02)create table emp as select * from xxx_emp where 1<>...
    99+
    2024-04-02
  • Oracle系列:(10)小结
    使用NVL(a,b)通用函数,统计员工年收入,NVL()作用于任何类型,即(number/varchar2/date)通用函数:参数类型可以是number或varchar2或date类型使用NVL2(a,b...
    99+
    2024-04-02
  • Oracle系列:(32)小结
    (01)一个完整的PLSQL有哪几部分组成?   [declare]/begin/[exception]/end;/(02)pename emp.ename%type和emp_rec emp%ro...
    99+
    2024-04-02
  • oracle序列如何用
    oracle 序列用于生成唯一数字序列,通常用作主键或标识符。创建序列需要指定序列名称、起始值、增量值、最大值、最小值、缓存大小和循环标志。使用序列时,使用 nextval 关键字获取序...
    99+
    2024-06-13
    oracle
  • .NET中XML序列化和反序列化常用类和属性小结
    目录序列化和反序列化是指什么?XmlSerializer类.NET-XML序列化和反序列化简单示例代码XmlTypeAttribute类应用示例XmlElementAttribute...
    99+
    2024-04-02
  • 列出按大小排序的 MySQL 表和大小?
    您可以在 information_schema.tables 的帮助下完成此操作。语法如下 -SELECT TABLE_NAME, table_rows, data_length, index_length, round(((dat...
    99+
    2023-10-22
  • Python  序列化反序列化和异常处理的问题小结
    目录1.迭代器1.1 可迭代对象1.2 如何判断一个对象是否可以迭代1.3 可迭代对象的本质1.4 迭代器Iterator1.5 如何判断一个对象是否迭代器1.6 for...in....
    99+
    2022-12-23
    Python  序列化反序列化 Python  异常处理
  • oracle序列的概念是什么
    今天小编给大家分享一下oracle序列的概念是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2024-04-02
  • Oracle中序列命名规范有哪些
    这期内容当中小编将会给大家带来有关Oracle中序列命名规范有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、序列的建立:create sequence "...
    99+
    2024-04-02
  • Oracle中sequence(序列)使用方法详解
    目录1、create sequence seq_userinfo2、increment  by  13、start with 14、nomaxvalue5、nominvallue6、cach...
    99+
    2023-03-13
    oracle sequence用法 Oracle序列 oracle sequence序列
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作