Les13-其它的数据库对象

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

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

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

资源描述

十三.其它的数据库对象目标结束本节课后,应当达到如下目标:–描述数据库对象和它们的用处–创建、维护、使用序列–创建和维护索引–创建私有和公有的同义词数据库对象描述基本的数据库对象,由行和列组成逻辑上代表从一个或者多个表中取出的数据集产生主键的值提高某些查询的性能一个数据库对象的别名对象TableViewSequenceIndexSynonym什么是序列?–自动产生唯一的数字–是一个可以共享的数据库对象–典型地用于产生数据库表中的主键值–能够节省应用程序的代码–当缓存在内存中时,能够提高存取的效率CREATESEQUENCE语句定义一个可以自动产生序列值的序列.CREATESEQUENCEsequence[INCREMENTBYn][STARTWITHn][{MAXVALUEn|NOMAXVALUE}][{MINVALUEn|NOMINVALUE}][{CYCLE|NOCYCLE}][{CACHEn|NOCACHE}];创建一个序列–创建一个名称为DEPT_DEPTNO的序列值,以用于DEPT表.–不要设置CYCLE选项.SQLCREATESEQUENCEdept_deptno2INCREMENTBY13STARTWITH914MAXVALUE1005NOCACHE6NOCYCLE;Sequencecreated.NEXTVAL和CURRVAL伪列–NEXTVAL返回下一个可用的序列值.每访问一次,它将产生一个唯一的新值,即使对不同的用户,该值也是唯一的.–CURRVAL返回当前的序列值.只有当NEXTVAL被访问之后,CURRVAL伪列才能包含一个值.序列的使用–向表中插入一个位于SANDIEGO,名为“MARKETING”的部门.–浏览序列DEPT_DEPTNO的当前值.SQLINSERTINTOdept(deptno,dname,loc)2VALUES(dept_deptno.NEXTVAL,3'MARKETING','SANDIEGO');1rowcreated.SQLSELECTdept_deptno.CURRVAL2FROMdual;使用序列–将序列值缓存在内存中,使得这些值访问起来更快.–如果发生下列情况,可能使得一个表中的序列值之间产生间隔,而不是连续的:回滚操作产生系统崩溃序列值同时也用于其它表–如果一个序列是以NOCACHE选项建立的,那么可以通过查询USER_SEQUENCES表来查看下一个可用的序列值,而不会使序列的当前值增加.修改一个序列可以更改序列的增量值、最大值、最小值、循环或者缓存选项。SQLALTERSEQUENCEdept_deptno2INCREMENTBY13MAXVALUE9999994NOCACHE5NOCYCLE;Sequencealtered.修改序列的指导–必须是序列的拥有者,或者拥有序列的修改权限.–只有将来会用到序列值会受到影响.–只能重建序列,才能更改序列的STARTWITH选项.–序列的修改可能会带来冲突,例如MAXVALUE如果小于当前值就会产生冲突.删除一个序列–使用DROPSEQUENCE命令来删除一个数据字典中的序列.–一旦序列被删除,那么该序列就不可以访问了.SQLDROPSEQUENCEdept_deptno;Sequencedropped.索引是什么?–一个数据库模式对象–Oracle利用索引来加快对数据行的访问–依靠索引来快速定位数据,从而减少了磁盘I/O的次数–与使用它的表是相互独立的数据库对象–Oracle服务器自动对索引进行维护和使用索引是如何创建的?–自动创建:当在创建表时,如果指定了PRIMARYKEY或者UNIQUE约束,那么将自动创建索引.–手动创建:用户可以在某个列上建立非唯一的索引,以加快基于该行的查询.创建一个索引–创建索引,以提高对表EMP的ENAME列的访问速度.SQLCREATEINDEXemp_ename_idx2ONemp(ename);Indexcreated.CREATEINDEXindexONtable(column[,column]...);•在一个列上或者多个列上创建索引.什么时候创建索引–欲创建索引的列在WHERE子句或者连接条件中频繁使用.–该列所包含的不同值很多.–该列包含大量的空值.–表中的数据行数非常大,而且只有2–4%数据行被查询出来.什么时候不必创建索引–表是空的.–列在查询条件中不经常使用.–大多数基于该表的查询,所查询出的数据量远多于2–4%行.–表被频繁修改.确认索引创建结果–USER_INDEXES数据字典视图包含用户创建的索引的名字和它唯一性.–USER_IND_COLUMNS视图包含索引的名字、表名、列名.SQLSELECTic.index_name,ic.column_name,2ic.column_positioncol_pos,ix.uniqueness3FROMuser_indexesix,user_ind_columnsic4WHEREic.index_name=ix.index_name5ANDic.table_name='EMP';基于函数的索引–基于函数的索引也就是基于表达式的索引.–索引表达式由表的列、常量、SQL函数或者用户自定义函数组成.SQLCREATETABLEtest(col1NUMBER);SQLCREATEINDEXtest_indexontest(col1,col1+10);SQLSELECTcol1+10FROMtest;删除索引–从数据字典中删除一个索引.–从数据字典中删除EMP_ENAME_IDX索引.–要删除一个索引,必须是索引的拥有者,或者具有DROPANYINDEX的权限.SQLDROPINDEXemp_ename_idx;Indexdropped.SQLDROPINDEXindex;同义词通过创建一个同义词(对象的另一个名字)来简化对数据库中对象的存取.缩短了对象的名字长度.CREATE[PUBLIC]SYNONYMsynonymFORobject;创建和删除同义词SQLCREATESYNONYMd_sum2FORdept_sum_vu;SynonymCreated.SQLDROPSYNONYMd_sum;Synonymdropped.–为视图DEPT_SUM_VU创建一个简短的名字.•丢弃一个同义词.总结–使用序列来自动产生一个唯一值,用于主键等.–从USER_SEQUENCES字典表中查询序列的信息.–创建索引来加快数据的存取.–通过USER_INDEXES字典表来查看索引的信息.–使用同义词为一个数据库对象取一个别名.作业概览–创建一个序列–使用序列–创建一个非唯一索引–获取并展示关于序列和索引的数据字典信息–丢弃索引

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

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

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

×
保存成功