已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
序列和同义词,Oracle数据库技术,教学要求,掌握同义词的定义和使用方法掌握序列的定义和使用方法,重点难点,同义词的定义和使用方法序列的定义和使用方法,同义词,同义词通过屏蔽对象的名称和拥有者,以及通过为分布式数据库的远程对象,提供位置透明性来提供一个安全层同义词使用方便,为数据库用户降低了SQL语句的复杂性。,同义词的概念,同义词是表、视图、序列、快照、过程、函数和包的别名。当应用程序或用户使用同义词操作模式对象时,Oracle将自动查找与同义词对应的对象。由于同义词只是其他模式对象的一个别名,所以它与视图一样,在数据库中只存储其定义文本,而不占其他额外的存储空间。,同义词的分类,同义词分为公用和私有两类。公用同义词的所有者为PUBLIC,所以数据库的每个用户均可引用它。私有同义词为创建它的用户所拥有,只有该用户才能控制它的访问权。,同义词的分类,在用户拥有的模式中创建私有同义词用户必须拥有CREATESYNONYM权限。在其他用户的模式中创建私有同义词,必须拥有CREATEANYSYNONYM权限。创建公共同义词必须拥有CREATEPUBLICSYNONYM系统权限。使用CREATESYNONYM语句创建同义词,在创建同义词时下层模式对象不必存在。,创建同义词,创建同义词的基本语法如下:CREATEORREPLACEPUBLICSYNONYMurser.synonym_nameFORurser.tabledatabase_linkurser.synonym_name:要创建的同义词的名称urser.table:要创建同义词的对象的名称NOTE:当创建同义词时,ORACLE不检查这个同义词的有效性,在创建同义词后,用户应自行测试,以保证同义词的有效性。,创建同义词,例:把user1.table1在user2中建一个同义词table1。createsynonymtable1foruser1.table1这样当在user2中查select*fromtable1时就相当于查select*fromuser1.table1。例:为本地数据库中的学生信息表student创建一个公用同义词。CREATEPUBLICSYNONYMstuFORstudent,创建同义词,如果要创建一个远程数据库上的某张表的同义词,需要先创建一个DatabaseLink(数据库连接)来扩展访问。语法如下:createpublicdatabaselinkdbLink1connecttosystemidentifiedbyoracleusingora9;,创建同义词,然后再创建该DB_LINK的同义词。语法如下:createsynonymtable_namefortable_nameDB_LINK;如:Createorreplacesynonymstuforstudentdblink1;,创建同义词,思考:在用户A中为student表建一个同义词:CREATESYNONYMstuFORstudent然后执行下列语句:grantselectonstutoB如果用B登录后执行select*fromA.student语句是否可以正常访问数据?,删除同义词,用SQL命令删除一个同义词的语法如下:DROPPUBLICSYNONYM同义词名称;删除私有同义词时,省略PUBLIC关键字删除公共同义词时,包括PUBLIC关键字例:删除stu同义词DROPPUBLICSYNONYMstu;注意:要删除同义词,首先要确定是否有权限,如果没有权限的话,是删除不了同义词的。,同义词的优点,使用同义词的最大好处是安全、方便。因为使用同义词时用户不必指出实际访问对象所属模式及名称,所以它简化了用户的访问操作。此外,应用程序使用同义词访问模式对象时,由于它屏蔽了对象的实际名称和所属模式,这在某种程度上对数据库有一定安全保护作用。,序列简介,在一些表中,主关键字有时会很复杂,可能是几个字段的组合。如果没有序号,就需要将这几个字段定义成主关键字。序号实际上是加在表中的一个附加选项,该字段的值是一些顺序号,即序列。Oracle专门提供了序列对象,直接利用系统产生序列值。,序列的概念,序列是一个Oracle对象,每次有请示时,它以递增的形式将序列号增加或者其它指定的数目,以确保这些数字是唯一的值。序列是一个38位长在证书。每个序列定义信息需要包括序列名称、初值、增量(正数表示序列号递增,负数表示序列号递减)、序列的最大最小值等。由于Oracle能自动保证序列值的唯一性,所以在数据库设计时常使用序列作为表的唯一主键。,序列的概念,序列定义存储在数据库SYSTEM表空间的数据字典内,序列号与表无关,所以数据库中的多个表可以公用同样的序列产生器。Oracle提供CURRVAL和NEXTVAL两个伪列,通过它们可以取得一个序列的当前序列值和下一个序列值。,创建序列,创建序列首先要有CREATESEQUENCE或者CREATEANYSEQUENCE权限创建序列的语法形式如下:CREATESEQUENCEurser.sequence_nameINCREMENTBYnSTARTWITHnMAXVALUEn|NOMAXVALUEMINVALUEn|NOMINVALUECYCLE|NOCYCLECACHEn|NOCACHEORDER|NOORDER,创建序列,其中,urser变量表示创建序列的用户;sequence表示创建的序列名称;n表示任意正整数值。使用时至少应该为序列赋给一个名字。所以其它参数都有缺省值。这些参数如下:INCREMENTBY:指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。缺省值为1。要创建一个只是递减的序列,使用值-1。STARTWITH:指定生成的第一个序列号。缺省值为1,也可以指定另外的其它值。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。MAXVALUE:指定序列可生成的最大值。,创建序列,NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。MINVALUE:指定序列的最小值。NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。CYCLE:是否循环。缺省值是NOCYCLE。如果想要序列达到最大值(或降到最小值)后再从头开始,请选用CYCLE参数。使用缺省值后,序列在升至最大值(或降至最小值)后会自动停止。CACHEn|NOCACHE是否设置缓存区。ORDER:缺省值是NOORDER。指定ORDER参数使Oracle在并行运行环境下,按照请求的序列来产生序列号。参数ORDER仅仅与并行处理有关系,并不需要它产生主键,但是它的确和并行数据库不同,在并行数据库中,序列是被当作时间戳使用的。一旦创建了一个序列后,便可以用它产生序列号。,创建序列,例1:创建一个名为sno_seq,从100开始自动增加50的序列。CREATESEQUENCEsno_seqINCREMENTBY2-步长为2STARTWITH100-起始为100NOMAXVALUE例2:向学生信息表student中插入数据。insertintostudentvalues(sno_seq.nextval,张三,20,男,E);-自增列,sno_seq.nextval表示返回当前自增列的号,访问序列,一旦定义了stu_sno_seq序列,可以用CURRVAL,NEXTVAL来访问序列值。CURRVAL:返回序列的当前值NEXTVAL:增加序列的值,然后返回序列值。当我们创建了序列后第一次使用nextval时,数据库将返回该序列的初始值,这个初值是用户自己设定的,以后再使用nextval时,将使用incrementby子句的值来增加序列值,并返回这个新值,currval将返回序列的当前值,也就是用户最后一次使用nextval时返回的值。,访问序列,这两个语句的使用方法如下:SELECTSEQUENCE_NAME.CURRVALFROMdual;SELECTSEQUENCE_NAME.NEXTVALFROMdual;例3:取得序列sno_seq的当前值和下一个值。selectsno_seq.currvalfromdual-取得序列的当前值selcectsno_seq.nextvalfromdual-取得序列的下一个值,查询序列信息,序列的信息可以在ALL_SEQUENCES和URSER_SEQUENCES数据字典中找到例:查询当前所建立的序列信息。select*fromuser_sequences,修改序列,要更改序列,用户的模式中必须包含序列或必须拥有ALTERANYSEQUENCE系统权限才能更改序列。修改序列的语法形式如下:ALTERSEQUENCEurser.sequence_nameINCREMENTBYnMAXVALUEn|NOMAXVALUEMINVALUEn|NOMINVALUECYCLE|NOCYCLECACHEn|NOCACHEORDER|NOORDER有关参数的详细含义,请参考前面创建序列的说明。,修改序列,例:将前面创建的sno_seq序列改为每次增加。ALTERSEQUENCEsno_seqINCREMENTBY3-步长为3NOMAXVALUENOTE:如果要重置一个序列,使其修改当前起始值,必须将序列删掉,再重新创建。,删除序列,用户可以删除所在模式中的任何序列,要想删除其它模式中的序列必须拥有DROPANYSEQUENCE系统权限。如果不再需要某个序列,可用DROPSEQUENCE语句删除它。用SQL语句删除一个序列和删除别的对象类似,其语法形式如下:DROPSEQUENCEurser.sequence_name例6:删除sno_seq序列。dropsequencesno_s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年青海卫生职业技术学院单招职业倾向性考试题库(含答案详解)
- 2025年九江一中学招聘备考题库及答案详解(夺冠系列)
- 2026年韶关学院单招综合素质考试题库及一套完整答案详解
- 2025年厦门市华侨大学集美附属学校非在编顶岗教师招聘备考题库及答案详解(夺冠系列)
- 2026年青海卫生职业技术学院单招职业技能考试题库附参考答案详解(模拟题)
- 2026年青海农牧科技职业学院单招职业技能考试题库含答案详解(完整版)
- 中国铁路集团有限公司2026年招聘1784人备考题库及1套完整答案详解
- 2026年陕西邮电职业技术学院单招职业倾向性测试题库附参考答案详解(预热题)
- 2026年青海省玉树藏族自治州单招职业倾向性考试题库及答案详解(基础+提升)
- 中山大学附属第三医院肇庆医院2026年合同人员招聘92人备考题库有答案详解
- 工程资料管理措施
- 米亚斯Mias货叉日常维护简明手册
- 高二化学《无机非金属材料》说课稿
- 曳引力和导轨计算介绍演示文稿
- 中国移动IP承载网
- 西安市城镇基本医疗保险特殊药品治疗(备案计划)申请表【模板】
- GB/T 40861-2021汽车信息安全通用技术要求
- 马克思主义政治学经典著作选读课件
- 彩钢料棚施工方案
- 甲酰胺安全技术说明书(msds)
- DL-T 5599-2021 电力系统通信设计导则
评论
0/150
提交评论