第21章 序列号.ppt

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

序列号 什么是序列号 Oracle使用序列生成器自动产生用户可以在事务中使用的唯一序列号,该序列号是一个整数类型数据,序列生成器主要完成在多用户环境下产生唯一的数字序列,但是不会造成额外的磁盘I/O或事务锁。简单的说序列号是Oracle数据库的一个对象,该对象产生唯一序列号。 使用序列号的优点 在不使用序列号时,如果多个用户同时向EMP表中插入一条员工记录,用户必须等待以得到下一个可用的员工号,而一旦使用序列号则用户无需相互等待就可以得到下一个可用的员工号。序列生成器会自动为每个用户创建正确的员工编号。 序列号 Oracle的序列号有如下特点: 序列号是独立于表的对象,由Oracle自动维护。 序列号可以对多个用户共享使用,即同一个序列对象供多个表使用且相互独立。 在SQL语句中使用序列号就可以使用它产生的序列号。 序列号 创建序列号的语法 创建序列号的语句格式如下: CREATE SEQUENCE sequence_name [START WITH n] [INCREMENT BY n] [{MAXVALUE n|NOMAXVALUE}] [{MINVALUE n|NOMINVALUE}] [{CACHE n|NOCACHE}] [{CYCLE n|NOCYCLE}] 下面依次解释各参数的含义: START WITH n:序列号初始值,默认值为1。 INCREMENT BY n:序列号的步进幅度,默认步进幅度为1。 MAXVALUE n:定义序列号的最大值。 NOMAXVALUE:不设置序列号的最大值,但是我们知道计算机对于数据的表达是有限的,实际上这个值当序列号是升序时为1027,序列号为降序时为-1。 MINVALUE n:定义序列号的最小值。 NOMINVALUE:不定义序列号的最小值,但是和参数NOMAXVALUE对应该值对于升序的序列号最小值为1,对于降序的序列号的最小值为-1026 CACHE n:Oracle服务器会预分配n个序列号并保保存在内存中。 NOCACHE:Oracle服务器不会预分配序列号并保保存在内存中。 CYCLE n:定义序列号在达到最大值或最小值后,将继续产生序列号。 NOCYCLE:定义序列号在达到最大值或最小值后,不再产生序列号。 序列号 创建序列号 准备工作 1.伪列:currval和nextval 2.创建一个表employees SQL create table employees 2 (employee_id number(6) not null, 3 emp_name varchar2(20), 4 email varchar2(25) not null, 5 phone_number varchar2(20), 6 hiredate date not null); 序列号 创建序列号 创建序列号emp_seq SQL create sequence emp_seq 2 start with 1000 3 increment by 1 4 nomaxvalue 5 nocycle; 验证创建的序列号 SQL col cycle_flag for a10 SQL select sequence_name,min_value,increment_by,cycle_flag 2 from user_sequences 3* where sequence_name like EMP% 序列号 使用序列号 向表employees中插入数据。 1.SQL insert into employees 2 values (emp_seq.nextval,tom,susu@sysdate); 2.SQL insert into employees 2 values (emp_seq.nextval,larry,larry@,139832182756,sysdate); 查看数据插入结果 SQL select * 2 from employees; 删除一行记录,在插入一行记录查看序列号的唯一性。 SQL delete from employees 2 where employee_id=1001; SQL insert into employees 2 values 3 (emp_seq.nextval,asaf,asaf@sysdate); 再次查看数据

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档