我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle中的小序列

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle中的小序列

    话说序列很少人知道,因为Mysql和sql 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,当时数据量比较小,利用表格然后插入到数据表列,如果数据量这个方法不可行而且特别麻烦,那么今天学习的序列就派上了大用场!

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


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle中的小序列

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle中序列(Sequence)详解

序列(Sequence)是Oracle数据库中的一种对象,用于生成唯一的递增或递减的数字序列。序列可以用于生成主键值或者其他需要唯一标识的值,常用于表的主键列。创建序列语法:```CREATE SEQUENCE sequence_name[
2023-09-23

Oracle中的序列SEQUENCE有什么特点

序列是一个数据库对象,用于生成唯一的递增或递减的数字序列。序列可以被多个表共享,每个表可以使用序列来生成唯一的主键值。序列的值在数据库中是持久的,即使数据库重启,序列的值也会被保存。序列的值可以被预先缓存,以提高性能。序列可以按照指
Oracle中的序列SEQUENCE有什么特点
2024-04-09

如何在Oracle中创建序列

在Oracle中创建一个序列,可以使用如下的SQL语句:CREATE SEQUENCE sequence_nameSTART WITH 1INCREMENT BY 1MINVALUE 1NOCACHE;其中,sequence_na
如何在Oracle中创建序列
2024-04-09

oracle序列如何用

oracle 序列用于生成唯一数字序列,通常用作主键或标识符。创建序列需要指定序列名称、起始值、增量值、最大值、最小值、缓存大小和循环标志。使用序列时,使用 nextval 关键字获取序列的下一个值。如何使用 Oracle 序列Oracl
oracle序列如何用
2024-06-13

列出按大小排序的 MySQL 表和大小?

您可以在 information_schema.tables 的帮助下完成此操作。语法如下 -SELECT TABLE_NAME, table_rows, data_length, index_length,round(((data_le
2023-10-22

Python  序列化反序列化和异常处理的问题小结

这篇文章主要介绍了Python 序列化反序列化和异常处理,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2022-12-23

Oracle中sequence(序列)使用方法详解

目录1、create sequence seq_userinfo2、increment by ctzpXdcp; 13、start with 14、nomaxvalue5、nominvallue6、cache 20总结seque
2023-03-13

Oracle中怎么对VARCHAR列进行排序

在Oracle中,可以使用ORDER BY子句对VARCHAR列进行排序。例如:SELECT column_nameFROM table_nameORDER BY column_name;或者指定排序方式(升序或降序):SELEC
Oracle中怎么对VARCHAR列进行排序
2024-04-09

编程热搜

目录