资源描述
单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Oracle SQL&PL/SQL,第12,章,其它数据库对象,描述某些数据库对象以及它们的使用,创建、维护及使用序列,创建及维护索引,创建私有的和公共的同义词,本章要点,数据库对象,描述,数据存储的基本单元,由行和列组成,逻辑上来自一个或多个表的数据的集合,产生主关键字值,用于提高某些查询的性能,对象的替代名称,对象,表,视图,序列,索引,同义词,什么是序列,自动产生唯一数值,是一个可共享的对象,代表性地用于主键值的创建,代替应用码,当序列驻留在缓存中可以有效地提高序列的访问效率,CREATE SEQUENCE,语句,定义序列,自动产生连续数值,CREATE SEQUENCE,sequence,INCREMENT BY,n,START WITH,n,MAXVALUE,n,|,NOMAXVALUE,MINVALUE,n,|,NOMINVALUE,CYCLE|,NOCYCLE,CACHE,n,|NOCACHE;,创建序列,创建名称为,DEPT_DEPTNO,的序列,将其作为,DEPT,表的主键,没有使用,CYCLE,选项,SQL CREATE SEQUENCE dept_,deptno,2INCREMENT BY 1,3START WITH 91,4MAXVALUE 100,5NOCACHE,6NOCYCLE;,Sequence created.,确认序列,在字典表,USER_SEQUENCES,中可以验证序列值,LAST_NUMBER,列显示了下一个有效的序列值,SQL SELECTsequence_name,min_value,max_value,2 increment_by,last_number,3 FROMuser_sequences;,NEXTVAL,和,CURRVAL,伪列,NEXTVAL,返回下一个有效的序列值,必须在,NEXTVAL,前用序列名作前缀。每次被引用时都返回一个序列值,甚至是对于不同的用户,CURRVAL,获取当前序列值,,CURRVAL,能被引用之前必须,NEXTVAL,产生一个序列值。也用序列名作前缀。,NEXTVAL,和,CURRVAL,伪列,NEXTVAL,返回下一个有效的序列值,每次被引用时都返回一个序列值,甚至是对于不同的用户,CURRVAL,获取当前序列值,,CURRVAL,能被引用之前必须使用,NEXTVAL,产生一个序列值,使用序列,插入一条新的部门记录,部门在,San Diego,名称为,“,MARKETING”,查看序列,DEPT_DEPTNO,的当前值,SQL INSERT INTOdept(,deptno,dname,loc),2 VALUES(dept_,deptno,.NEXTVAL,3 MARKETING,SAN DIEGO);,1 row created.,SQL SELECTdept_,deptno,.CURRVAL,2 FROMdual;,使用序列,在高速缓存中存放序列值可以提高对序列值的访问速度。,在下列情况会产生序列值的间隙:,使用了回滚操作,系统崩溃,序列被另一个表使用,如果序列定义中使用了,NOCACHE,选项,可以通过查询,USER_SEQUENCES,表得到下一个有效的序列值。,修改序列,修改序列的增量值、最大值、最小值、循环选项或缓冲选项,SQL ALTER SEQUENCE dept_,deptno,2 INCREMENT BY 1,3 MAXVALUE 999999,4 NOCACHE,5 NOCYCLE;,Sequence altered.,修改序列的原则,您必须是序列的所有者,或者您具备,ALTER,权限,只能影响将来产生的序列值,如果要求序列从一个不同的值重新开始产生数值则必须删除然后再重建该序列,修改过程中有一些条件限制,删除序列,用,DROP SEQUENCE,语句从数据字典中将序列删除。,序列一旦删除便再也不能被引用。,SQL DROP SEQUENCE dept_,deptno,;,Sequence dropped.,什么是索引,模式对象,通过指针用于提高,Oracle,服务器检索记录的速度,通过快速路经访问方法迅速定位数据减少磁盘的,I/O,操作,独立于创建索引的表,Oracle,服务器自动使用和维护索引,如何创建索引,自动创建,当您在表中定义了,PRIMARY KEY,或,UNIQUE,约束,索引便自动在包含该约束的列上创建,手动创建,用户可以在列上创建非唯一索引以有效地提高对记录的访问速度,创建索引,提高对,EMP,表的,ENAME,的查询速度,SQL CREATE INDEX,emp,_,ename,_,idx,2 ON,emp,(,ename,);,Index created.,CREATE INDEX,index,ON,table,(,column,column,.);,在多个列上创建索引,创建索引的原则,经常用于,WHERE,子句或作为连接条件的列,所含数据值范围比较的列,含有大量空值的列,经常同时用于一个,WHERE,子句或连接条件的两个或多个列,绝大多数情况下只查询出小于其总记录的,2-4%,的表,创建索引的原则,如果是下列情况不要创建索引,:,表很小,列很少在查询中作为条件,绝大多数情况下查询出大于其总记录的,2-4%,的表,频繁更新的表,验证索引,USER_INDEXES,数据字典视图包含索引的名称及其唯一性,USER_IND_COLUMNS,数据字典视图包含索引名称,、,表名以及列名,SQL SELECT,ic,.index_name,ic,.column_name,2,ic,.column_position,col,_pos,ix.uniqueness,3 FROMuser_indexes ix,user_,ind,_columns,ic,4 WHERE,ic,.index_name=ix.index_name,5 AND,ic,.table_name=EMP;,删除索引,从数据字典中删除索引,从数据字典中删除,EMP_ENAME_IDX,索引,要删除索引,您必须是索引的所有者或者具备,DROP ANY INDEX,权限,SQL DROP INDEX,emp,_,ename,_,idx,;,Index dropped.,SQL DROP INDEX,index,;,同义词,通过创建同义词(对象的另一个名称)的方式可以简化对数据对象的访问,引用其它用户的表,缩短对象名称的长度,CREATE PUBLIC SYNONYM,synonym,FOR,object,;,创建、删除同义词,SQL CREATE SYNONYMd_sum,2 FORdept_sum_vu;,Synonym Created.,SQL DROP SYNONYM d_sum;,Synonym dropped.,为视图,DEPT_SUM_VU,创建一个简洁的名字,删除同义词,小结,序列产生器可以自动为表中的记录产生序列值,,序列的相关信息保存在字典表,USER_SEQUENCES,中,索引用于提高查询速度,用户可以通过字典表,USER_INDEXES,获取索引的相关信息。,为了更方便地引用某个数据可对象,,DBA,可以创建公共同义词,
展开阅读全文