零点起及飞学Oracle之序列.pptx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
零点起及飞学Oracle之序列

第14章 序列序列是一种数据库对象,用来自动产生一组唯一的序号。一般将序列应用于表的主键列,这样当向表中插入数据时,主键列就使用了序列中的序号,从而保证主键列的值不会重复。序列具有多个属性来设置取值方式。在Oracle开发中,序列最常见的功能为数据表提供自增列值。本章将主要讲解如何创建序列、使用序列、修改序列属性。14.1 自动生成序号Oracle没有自动增长的数据类型,我们需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。对于数据库来说,自动生成序号都是必不可少的需求之一。本节将简要介绍主流数据库中的自动生成序号使用的策略。在创建数据表时,自动生成序号策略要求在数据库层、无需人工干预即可获得序号。在SQL Sever中,提供了identity类型——表示自增类型。用户通过将列设置为自增列来保证列值具有唯一的序号。14.1 自动生成序号例如,在创建表时使用如下SQL语句即可。create table test(id int identity(1,1),name varchar(20))其中,identity(1,1)代表,将该列的值,将从整数1开始,每增加一条记录,列值将自动增加1。14.1 自动生成序号在MySQL中,自增列的设置使用auto_increment关键字,如下所示。create table order( id int primary key not null auto_increment, content varchar(20), customer_id int );在SQL Server和MySQL插入数据时,将主键列留空,那么数据库将自动为主键列赋值。14.2 创建和使用序列在前面章节中我们讲解到可以利用获得表employeenew中最大employee_id并加1的方法来获得新记录的员工employee_id 。对于用户来说,这种方式显得过于繁琐。本小节将利用序列来处理这一问题。序列是Oracle数据库对象之一。一旦创建,即可保存于数据库中。14.2.1 创建序列默认情况下,用户可以在自己创建序列。创建序列的命令为create sequence,它的完整语法格式为:create sequence 序列名称其中,create sequence为固定命令,其后紧跟序列名称;序列名称一般要与所服务对象具有一定的关联性,并添加seq后缀。【示例14-1】创建一个用于生成表employeenew主键employee_id的序列。在数据字典中获得其信息。14.2.2 使用序列对用户而言,序列中的可用资源是其中包含的序号。用户可以将序号应用于DML语句和表达式中。序列提供了两个伪列,即nextval和currval,用来访问序列中的序号。其中,nextval代表下一个可用的序号;currval代表当前的序号。每次调用nextval,都会使序列的当前值增加单位步长(默认步长为1)。获得currval属性与nextval属性值的调用形式为:序列名称.currval序列名称.nextval14.2.2 使用序列例如,获得序列employeenew_seq的当前值与下一个值的方法如下所示。employeenew_seq.currvalemployeenew_seq.nextval【示例14-2】在序列创建之后,应该首先使用seq.nextval,然后才能够使用seq.currval。否则,Oracle将抛出错误。14.2.2 使用序列【示例14-3】序列的nextval属性可以看做自增变量,因此,可以利用该属性生成表employeenew的主键Imployee_id。其步骤如下所示:(1)保证表employeenew的employee_id列为主键。(2)查看表employeenew的已有记录。(3)多次调用employeenew_seq.nextval的方式,使其值增长到214。(4)向表employeenew中插入数据,并利用employeenew_seq来获得主键值。(5)查看此时表employeenew中的数据。14.2.3 指定序列初始值在上述示例中,需要多次调用employeenew_seq.nextval的方式,使其值增长到214。除了手动将序列employeenew_seq的nextval属性值调整到合适的位置之外,还可以在创建序列时使用start with选项来指定序列的初始值。start with的基本语法如下所示。create sequence 序列名称 start with n其中,n代表序列创建时的初始值。14.2.3 指定序列初始值【示例14-4】为了重建employeenew_seq,首先需要利用drop命令删除已有对象。接着,获取表employeenew中em

您可能关注的文档

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档