第10章 其他数据库对象..pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 序列产生器可以为表中的记录自动产生序列数值,序列是由用户创建的数据库对象并且可以被多个用户共享。 序列的典型应用是创建主键值,用于标识记录的唯一性。 序列可以由Oracle例程以递增或递减的方式产生。 序列是可以节约时间提高效率的对象,因为采用序列便不用编写序列产生代码,有效地减少应用程序的代码量。 序列数值的产生及存储与表无关,因此相同的序列可以用于多个表。 * 语法中: sequence 序列产生器的名称 INCREMENT BY n 指定序列值之间的间隔n,如果省略该项间隔为1 START WITH n 指定起始序列值n,如果该项省略起始值为1 MAXVALUE n 指定最大序列值 NOMAXVALUE 指定最大序列值为10的27次方,而降序的最大值为-1,这是一默认选项 MINVALUE n 指定最小序列值 NOMINVALUE 指定升序最小序列值为1,而降序最小序列值为负10的26次方,这是一默认选项 CYCLE | NOCYCLE 指定序列值在达到最大值或最小值之后继续产生序列值,NOCYLE表示不再产生,NOCYLE是默认选项。 CACHE n | NOCACHE 指定序列值被Oracle服务器预先分配并存储在内存中,NOCACHE表示不预先分配并存储,NOCACHE是默认选项 * * 上面的例子创建名称为test_seq的序列,序列起始值为10,缓存中序列值个数为10 ,允许序列循环,序列最大值为100,序列值之间的间隔为2。 如果序列用于产生主键值不能使用CYCLE选项,除非您采用了比序列循环更快的可靠机制清除老记录。 课堂指导 如果INCREMENT BY指定的数值为负数,那么序列值将递减产生。 如果序列采用了将序列值预先分配并存储在内存中,一旦出现系统故障这些预先产生的序列值将丢失。 * 使用序列 一旦您创建了序列,您可以用序列在表中产生连续的数值。使用NEXTVAL 和CURRVAL伪列可以引用序列值 NEXTVAL和CURRVAL伪列 NEXTVAL用于返回序列下一个可获取的序列值,您必须在NEXTVAL前用序列名作前缀。当你引用sequence.NEXTVAL,一个新的序列值产生并且将当前值放入CURRVAL伪列中。 NEXTVAL每次被引用时都返回一个序列值,甚至是对于不同的用户。 CURRVAL伪列用于提取当前用户产生的序列值,在当前用户会话中,CURRVAL能被引用之前必须使用NEXTVAL产生一个序列值。您必须在CURRVAL前冠以序列名作为前缀,应用sequence.CURRVAL便可得到最后返回给用户程序数值。 * 序列值的缓冲 在高速缓存中存放序列值可以提高对序列值的访问速度,缓存在对序列的第一次引用时便填充。每一次请求下一个序列值是从缓存中的序列得到的。当缓存中最后一个序列值被使用后,下一次请求序列值时在内存中便产生了新的一批缓冲序列值。 小心序列中的间隙 尽管序列产生器是没有间隙地产生连续的序列值,但这一操作是独立于提交或回滚操作的,如果您回滚一条使用序列的语句,序列值便会造成序列值的间隔。另一种会导致序列值间隔的原因是系统崩溃,如果在内存中存放有缓冲的序列值,这些值在系统崩溃后自动丢失。 因为序列不是和某个表绑定在一起的,同一个序列可以被多个表引用,如果出现这种情况,每个使用该序列的表中很可能使用的便是有间隙的序列值。 * 修改序列 如果已经达到了序列限制的最大值,序列无法再产生有效的值,并且您将得到一个错误提示序列超过最大值。为了继续使用该序列,您可以使用ALTER SEQUENCE语句对序列进行修改。 语法 ALTER SEQUENCE sequence [INCREMENT BY n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}]; * 如果您没有为表建立索引,将会出现扫描整个表的情况。 索引可以提供对表中记录直接快速的访问,索引的目的就是通过指针快速定位数据的方法有效地减少磁盘的I/O操作。 Oracle服务器自动使用和维护索引,一旦创建了索引不需要用户去直接干预。 索引在逻辑上和物理上是独立于创建索引的表,也就是说索引可以在任何时候创建或者删除都不会影响到它的基表或其它索引。 注: 如果您删除某个表,那么和该表相关的索引也被删除。 * 可以创建两种类型的索引,一种是唯一索引,当您在表中定义了PRIMARY KEY 或UNIQUE 约束,索引便自动在包含该约束的列上创建唯一索引,索

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档