Oracle公司内部数据库培训资料Les12

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Copyright©OracleCorporation,2001.Allrightsreserved.其它数据库对象12-2Copyright©OracleCorporation,2001.Allrightsreserved.目标通过本章学习,您将可以:•创建,维护,和使用序列•创建和维护索引•创建私有和公有同义词12-3Copyright©OracleCorporation,2001.Allrightsreserved.常见的数据库对象对象描述表基本的数据存储集合,由行和列组成。视图从表中抽出的逻辑上相关的数据集合。序列提供有规律的数值。索引提高查询的效率同义词给对象起别名12-4Copyright©OracleCorporation,2001.Allrightsreserved.什么是序列?序列:•自动提供唯一的数值•共享对象•主要用于提供主键值•代替应用代码•将序列值装入内存可以提高访问效率12-5Copyright©OracleCorporation,2001.Allrightsreserved.CREATESEQUENCE语句定义序列:CREATESEQUENCEsequence[INCREMENTBYn][STARTWITHn][{MAXVALUEn|NOMAXVALUE}][{MINVALUEn|NOMINVALUE}][{CYCLE|NOCYCLE}][{CACHEn|NOCACHE}];12-6Copyright©OracleCorporation,2001.Allrightsreserved.创建序列•创建序列DEPT_DEPTID_SEQ为表DEPARTMENTS提供主键•不使用CYCLE选项CREATESEQUENCEdept_deptid_seqINCREMENTBY10STARTWITH120MAXVALUE9999NOCACHENOCYCLE;Sequencecreated.12-7Copyright©OracleCorporation,2001.Allrightsreserved.查询序列•查询数据字典视图USER_SEQUENCES获取序列定义信息•如果指定NOCACHE选项,则列LAST_NUMBER显示序列中下一个有效的值SELECTsequence_name,min_value,max_value,increment_by,last_numberFROMuser_sequences;12-8Copyright©OracleCorporation,2001.Allrightsreserved.NEXTVAL和CURRVAL伪列•NEXTVAL返回序列中下一个有效的值,任何用户都可以引用•CURRVAL中存放序列的当前值•NEXTVAL应在CURRVAL之前指定,二者应同时有效12-9Copyright©OracleCorporation,2001.Allrightsreserved.序列应用举例•序列DEPT_DEPTID_SEQ的当前值INSERTINTOdepartments(department_id,department_name,location_id)VALUES(dept_deptid_seq.NEXTVAL,'Support',2500);1rowcreated.SELECTdept_deptid_seq.CURRVALFROMdual;12-10Copyright©OracleCorporation,2001.Allrightsreserved.使用序列•将序列值装入内存可提高访问效率•序列在下列情况下出现裂缝:–回滚–系统异常–多个表同时使用同一序列•如果不讲序列的值装入内存(NOCACHE),可使用表USER_SEQUENCES查看序列当前的有效值12-11Copyright©OracleCorporation,2001.Allrightsreserved.修改序列修改序列的增量,最大值,最小值,循环选项,或是否装入内存ALTERSEQUENCEdept_deptid_seqINCREMENTBY20MAXVALUE999999NOCACHENOCYCLE;Sequencealtered.12-12Copyright©OracleCorporation,2001.Allrightsreserved.修改序列的注意事项•必须是序列的拥有者或对序列有ALTER权限•只有将来的序列值会被改变•改变序列的初始值只能通过删除序列之后重建序列的方法实现•其它的一些限制12-13Copyright©OracleCorporation,2001.Allrightsreserved.删除序列•使用DROPSEQUENCE语句删除序列•删除之后,序列不能再次被引用DROPSEQUENCEdept_deptid_seq;Sequencedropped.12-14Copyright©OracleCorporation,2001.Allrightsreserved.索引索引:•一种数据库对象•通过指针加速Oracle服务器的查询速度•通过快速定位数据的方法,减少磁盘I/O•索引与表相互独立•Oracle服务器自动使用和维护索引12-15Copyright©OracleCorporation,2001.Allrightsreserved.创建索引•自动创建:在定义PRIMARYKEY或UNIQUE约束后系统自动在相应的列上创建唯一性索引•手动创建:用户可以在其它列上创建非唯一的索引,以加速查询12-16Copyright©OracleCorporation,2001.Allrightsreserved.创建索引•在一个或多个列上创建索引•在表EMPLOYEES的列LAST_NAME上创建索引CREATEINDEXemp_last_name_idxONemployees(last_name);Indexcreated.CREATEINDEXindexONtable(column[,column]...);12-17Copyright©OracleCorporation,2001.Allrightsreserved.什么时候创建索引以下情况可以创建索引:•列中数据值分布范围很广•列中包含大量空值•列经常在WHERE子句或连接条件中出现•表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%12-18Copyright©OracleCorporation,2001.Allrightsreserved.什么时候不要创建索引下列情况不要创建索引:•表很小•列不经常作为连接条件或出现在WHERE子句中•查询的数据大于2%到4%•表经常更新•加索引的列包含在表达式中12-19Copyright©OracleCorporation,2001.Allrightsreserved.SELECTic.index_name,ic.column_name,ic.column_positioncol_pos,ix.uniquenessFROMuser_indexesix,user_ind_columnsicWHEREic.index_name=ix.index_nameANDic.table_name='EMPLOYEES';查询索引•可以使用数据字典视图USER_INDEXES和USER_IND_COLUMNS查看索引的信息12-20Copyright©OracleCorporation,2001.Allrightsreserved.基于函数的索引•基于函数的索引是一个基于表达式的索引•索引表达式由列,常量,SQL函数和用户自定义的函数CREATEINDEXupper_dept_name_idxONdepartments(UPPER(department_name));Indexcreated.SELECT*FROMdepartmentsWHEREUPPER(department_name)='SALES';12-21Copyright©OracleCorporation,2001.Allrightsreserved.删除索引•使用DROPINDEX命令删除索引•删除索引UPPER_LAST_NAME_IDX•只有索引的拥有者或拥有DROPANYINDEX权限的用户才可以删除索引DROPINDEXupper_last_name_idx;Indexdropped.DROPINDEXindex;12-22Copyright©OracleCorporation,2001.Allrightsreserved.同义词使用同义词访问相同的对象:•方便访问其它用户的对象•缩短对象名字的长度CREATE[PUBLIC]SYNONYMsynonymFORobject;12-23Copyright©OracleCorporation,2001.Allrightsreserved.创建和删除同义词•为视图DEPT_SUM_VU创建同义词•删除同义词CREATESYNONYMd_sumFORdept_sum_vu;SynonymCreated.DROPSYNONYMd_sum;Synonymdropped.12-24Copyright©OracleCorporation,2001.Allrightsreserved.总结通过本章学习,您已经可以:•使用序列•通过数据字典视图USER_SEQUENCES查看序列信息•使用索引提高查询效率•通过数据字典视图USER_INDEXES查看索引信息•为数据对象定义同义词

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功