欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    oracle第10章模式对象.ppt

    • 资源ID:5442190       资源大小:401.50KB        全文页数:160页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    oracle第10章模式对象.ppt

    第10章 模式对象,本章内容,模式概念表管理索引管理索引化表管理分区表与分区索引的管理簇、视图、序列、同义词、数据库链接管理,本章要求,掌握表的管理掌握索引的管理掌握索引化表的概念及其管理掌握分区的概念及分区管理了解簇、视图、序列、同义词、数据库链接等的管理,10.1模式,模式概念模式与用户的关系模式选择与切换,模式概念是指一系列逻辑数据结构或对象的集合。模式与用户的关系模式与用户相对应,一个模式只能被一个数据库用户所拥有,并且模式的名称与这个用户的名称相同。通常情况下,用户所创建数据库对象都保存在与自己同名的模式中。同一模式中数据库对象的名称必须惟一,而在不同模式中的数据库对象可以同名。默认情况下,用户引用的对象是与自己同名模式中的对象,如果要引用其他模式中的对象,需要在该对象名之前指明对象所属模式。,模式选择与切换如果用户以NORMAL身份登录,则进入同名模式;若以SYSDBA身份登录,则进入SYS模式;如果以SYSOPER身份登录,则进入PUBLIC模式。,10.2表,Oracle常用数据类型 表的创建表中约束的管理 表参数设置 表的修改 表的删除 利用OEM管理表,CREATE TABLE table_name(column_name datatype column_level_constraint,column_name datatype column_level_constraint,table_level_constraint)parameter_list,直接创建表,CREATE TABLE employee(empno NUMBER(5)PRIMARY KEY,ename VARCHAR2(15),deptno NUMBER(3)NOT NULL CONSTRAINT fk_emp REFERENCES dept)TABLESPACE USERSPCTFREE 10 PCTUSED 40STORAGE(INITIAL 50K NEXT 50K MAXEXTENTS 10 PCTINCREASE 25);,表名(table_name)必须是合法标识符,长度为130 字节,并且以字母开头,可以包含字母(AZ,az)、数字(09),下划线(_)、美元符号($)和井号(#)。此外,表名称不能是Oracle数据库的保留字 数据类型(datatype)字符类型数字类型日期类型大对象类型其他类型,CHAR(n)定长字符串,n的取值范围为1-2000字节VARCHAR2(n)可变字符串,n取值范围为1-4000字节自动调整数据长度NCHAR(n)用来存储Unicode类型字符串。NVARCHAR2(n)它用来存储Unicode类型字符串。LONG可变长字符列,最大长度为2GB用于不需设置成索引的字符,不常用,字符类型,数字数据类型,NUMBER(m,n)可变长的数值列,m是所有有效数字的位数,n为小数点后的位数,日期数据类型,DATE公元前4712年1月1日到公元4712年1月1日默认格式:DD-MON-YY习惯格式:YYYY-MM-DD HH:MM:SS,大对象数据类型,BLOB、CLOB、NCLOB用来保存较大的图形文件或带格式的文本文件、音频和视频等非文本文件最大长度4GBBFILE在数据库外部保存的大型二进制对象文件。不能写,只能读、查询大小有操作系统决定,其他数据类型,RAW(n)可变长二进制数据保存较小的图形文件或带格式的文本文件N取1-2000字节LONG RAW可变长二进制数据保存较大的图形文件或带格式的文本文件N取2GB字节ROWIDUROWID,约束(constraint)在Oracle数据库中对列的约束包括主键约束、惟一性约束、检查约束、外键约束和空/非空约束等5中,定义方法有表级约束和列级约束2种。关于表的约束详见表约束中介绍。参数(parameter_list)在定义表时,可以通过参数设置表存储在哪一个表空间中,和存储空间分配等。,利用子查询创建表,语法CREATE TABLE table_name(column_name column_level_constraint,column_name column_level_constraint,table_level_constraint)parameter_listAS subquery;,注意通过该方法创建表时,可以修改表中列的名称,但是不能修改列的数据类型和长度;源表中的约束条件和列的缺省值都不会复制到新表中;子查询中不能包含LOB类型和LONG类型列;当子查询条件为真时,新表中包含查询到的数据;当查询条件为假时,则创建一个空表。,创建一个表,保存工资高于3000的员工的员工号、员工名和部门号。语句为:CREATE TABLE emp_select(emp_no,emp_name,dept_no)ASSELECT empno,ename,deptno FROM employee WHERE sal3000;,CREATE TABLE EMP_SELECT(EMPNO,ENAME,JOB,DEPTNO,SALARY)PCTFREE 10 PCTUSED 40TABLESPACE usersSTORAGE(INITIAL 50K NEXT 50K MAXEXTENTS 10 PCTINCREASE 25)AS SELECT EMPNO,ENAME,JOB,EDPTNO,SAL FROM EMPLOYEES WHERE SAL1000,创建临时表,临时表中的数据在特定条件下自动释放,但其结构将一直存在。临时表中的数据只在当前会话或当前事务中是有效的。根据临时表中数据被释放的时间不同,临时表分为事务级别的临时表和会话级别的临时表两类。ON COMMIT DELETE ROWS/事务级临时表ON COMMIT PRESERVE ROWS/会话级临时表,事务级别的临时表是在事务提交时系统自动删除表中所有记录。CREATE GLOBAL TEMPORARY TABLE tran_temp(ID NUMBER(2)PRIMARY KEY,name VARCHAR2(20)ON COMMIT DELETE ROWS;,会话级别的临时表是在会话终止时系统自动删除表中所有记录。CREATE GLOBAL TEMPORARY TABLE sess_temp(ID NUMBER(2)PRIMARY KEY,name VARCHAR2(20)ON COMMIT PRESERVE ROWS;,表约束,约束的类别 定义约束 添加和删除约束 设置约束状态 约束的延迟检查 查询约束信息,约束的类别,约束作用是在表中定义的用于维护数据库完整性的一些规则。通过对表中列定义约束,可以防止在执行DML操作时,将不符合要求的数据插入到表中。约束类型PRIMARY KEYUNIQUECHECKFOREIGN KEY NULL/NOT NULL,PRIMARY KEY,特点定义主键,起惟一标识作用,其值不能为NULL,也不能重复;一个表中只能定义一个主键约束;建立主键约束的同时,在该列上建立一个惟一性索引,可以为它指定存储位置和存储参数;主键约束可以是列级约束,也可以是表级约束。,UNIQUE,特点定义为惟一性约束的某一列或多个列的组合的取值必须惟一;如果某一列或多个列仅定义惟一性约束,而没有定义非空约束,则该约束列可以包含多个空值;Oracle自动在惟一性约束列上建立一个惟一性索引,可以为它指定存储位置和存储参数;惟一性约束可以是列级约束,也可以是表级约束。,在一个基本表中只能定义一个PRIMARY KEY约束,但可定义多个UNIQUE约束;对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束。,PRIMARY KEY与UNIQUE比较,CHECK,特点检查约束用来限制列值所允许的取值范围,其表达式中必须引用相应列,并且表达式的计算结果必须是一个布尔值;约束表达式中不能包含子查询,也不能包含SYSDATE、USER等SQL函数,和ROWID、ROWNUM等伪列;一个列可以定义多个检查约束;检查约束可以是列级约束,也可以是表级约束。,概念FOREIGN KEY约束指定某一个列或一组列作为外部键,其中,包含外部键的表称为从表,包含外部键所引用的主键或唯一键的表称主表。系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。,FOREIGN KEY,FOREIGN KEY,特点定义外键约束的列的取值要么是主表参照列的值,要么为空;外键列只能参照于主表中的主键约束列或惟一性约束列;可以在一列或多列组合上定义外键约束;外键约束可以是列级约束,也可以是表级约束。,NULL/NOT NULL,特点在同一个表中可以定义多个NOT NULL约束;只能是列级约束。,定义约束,列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中。通常用于对多个列一起进行约束,与列定义用,分隔。定义表约束时必须指出要约束的那些列的名称。,定义列级约束的语法为:CONSTRAINT constraint_name constraint_type conditioin;定义表级约束的语法为:CONSTRAINT constraint_nameconstraint_type(column1_name,column2_name,|condition);注意Oracle约束通过名称进行标识。在定义时可以通过CONSTRAINT关键字为约束命名。如果用户没有为约束命名,Oracle将自动为约束命名。,CREATE TABLE student(sno NUMBER(6)CONSTRAINT S_PK PRIMARY KEY,sname VARCHAR2(10)NOT NULL,sex CHAR(2)CONSTRAINT S_CK1 check(sex in(M,F),sage NUMBER(6,2),CONSTRAINT S_CK2 CHECK(sage between 18 and 60);CREATE TABLE course(cno NUMBER(6)PRIMARY KEY,cname CHAR(20)UNIQUE USING INDEX TABLESPACE indx STORAGE(INITIAL 64K NEXT 64K);,定义列级FOREIGN KEY约束CONSTRAINT constraint_name FOREIGN KEY REFERENCES ref_table_name(column_name,)定义表级FOREIGN KEY约束CONSTRAINT constraint_name FOREIGN KEY(column_name,)REFERENCES ref_table_name(column_name,)ON DELETE CASCADE|SET NULL;,ON DELETE CASCADE删除子表中所有相关记录ON DELETE SET NULL将子表中相关记录的外键约束列值设置为NULLON DELETE RESTRICTED受限删除,即如果子表中有相关子记录存在,则不能删除主表中的父记录,默认引用方式。,DEFAULT如果用户在插入新行时没有显示为列提供数据,系统将默认值赋给该列。语法CONSTRAINT DEFAULT 表达式,添加约束,添加约束语法为:ALTER TABLE table_name ADD CONSTRAINT constraint_nameconstraint_type(column1_name,column2_name,)condition;,创建一个表CREATE TABLE player(ID NUMBER(6),sno NUMBER(6),sname VARCHAR2(10),sage NUMBER(6,2),resume VARCHAR2(1000);添加主键约束ALTER TABLE player ADD CONSTRAINT P_PK PRIMARY KEY(ID);添加惟一性约束ALTER TABLE player ADD CONSTRAINT P_UK UNIQUE(sname);,添加检查约束ALTER TABLE player ADD CONSTRAINT P_CK CHECK(sage BETWEEN 20 AND 30);添加外键约束ALTER TABLE playerADD CONSTRAINT P_FK FOREIGN KEY(sno)REFERENCES student(sno)ON DELETE CASCADE;添加空/非空约束注意:为表列添加空/非空约束时必须使用MODIFY子句代替ADD子句。ALTER TABLE player MODIFY resume NOT NULL;ALTER TABLE player MODIFY resume NULL;,修改约束,ALTER TABLE ADD MODIFY ENABLE DISABLE DROP,删除约束,删除指定内容的约束ALTER TABLE player DROP UNIQUE(sname);删除指定名称的约束ALTER TABLE player DROP CONSTRAINT P_CK;如果要在删除主键约束、惟一性约束同时保留惟一性索引,则必须在ALTER TABLEDORP 语句中指定KEEP INDEX 子句。ALTER TABLE player DROP CONSTRAINT P_UK KEEP INDEX;如果要删除约束同时,删除引用该约束的其他约束,则需要在ALTER TABLEDORP语句中指定CASCADE关键字。ALTER TABLE player DROP CONSTRAINT P_PK CASCADE;,设置约束状态,激活(ENABLE)状态当约束处于激活状态时,约束将对表的插入或更新操作进行检查,与约束规则冲突的操作被回退。禁用(DISABLE)状态当约束处于禁用状态时,约束不起作用,与约束规则冲突的插入或更新操作也能够成功执行。利用SQL*Loader从外部数据源提取大量数据到数据库中;进行数据库中数据的大量导入、导出操作;针对表执行一项包含大量数据操作的批处理工作时。,禁用约束 在定义约束时,可以将约束设置为禁用状态,默认为激活状态。也可以在约束创建后,修改约束状态为禁用。创建表时禁用约束CREATE TABLE S(SNO CHAR(10)PRIMARY KEY DISALBE,);利用ALTER TABLEDISABLE禁用约束ALTER TABLE STUDENT DISABLE CONSTRAINT S_CK1;ALTER TABLE STUDENT DISABLE UNIQUE(sname);,禁用主键约束、惟一性约束时,会删除其对应的惟一性索引,而在重新激活时,Oracle为它们重建惟一性索引。若在禁用约束时,保留对应的惟一性索引,可使用ALTER TABLEDISABLEKEEP INDEX语句。ALTER TABLE STUDENT DISABLE UNIQUE(sname)KEEP INDEX;ALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX;若当前约束(主键约束、惟一性约束)列被引用,则需要使用ALTER TABLEDISABLECASCADE语句同时禁用引用该约束的约束。ALTER TABLE STUDENT DISABLE PRIMARY KEY KEEP INDEX CASCADE;,激活约束创建或添加约束时,默认为激活状态。利用ALTER TABLEENABLE语句激活约束ALTER TABLE STUDENT ENABLE UNIQUE(sname);禁用主键约束、惟一性约束时,会删除其对应的惟一性索引,而在重新激活时,Oracle为它们重建惟一性索引,可以为索引设置存储位置和存储参数(索引与表尽量分开存储)。ALTER TABLE STUDENT ENABLE PRIMARY KEY USING INDEX TABLESPACE indx STORAGE(INITIAL 32K NEXT 16K);通过ALTER TABLEMODIFYDISABLE|ENABLE语句改变约束状态ALTER TABLE STUDENT MODIFY CONSTRAINT S_CK2 DISABLE;,约束的延迟检查,默认情况下,在表中的约束都是不可延迟约束,Oracle在一条DML语句执行完毕之后立即进行约束检查(除非禁用)。创建约束时可以显式使用DEFERRABLE关键字,创建可延迟的约束。INITIALLY IMMEDIATE 或INITIALLY DEFERRED说明可延迟约束在初始状态下是立即检查还是延迟检查如果在定义约束时设定为不可延迟,则约束创建后不能更改其可延迟性。只有创建时设定为可延迟的约束,创建后才能更改其可延迟性。,创建两个表,其约束都是可延迟的。CREATE TABLE new_dept(deptno NUMBER PRIMARY KEY DEFERRABLE INITIALLY IMMEDIATE,dname CHAR(10)UNIQUE);CREATE TABLE new_emp(empno NUMBER PRIMARY KEY,ename CHAR(10),deptno NUMBER CONSTRAINT NE_FK REFERENCES new_dept(deptno)ON DELETE CASCADE DEFERRABLE);,由于外键约束的作用,执行下面语句时会产时错误。INSERT INTO new_emp VALUES(1,ZHANG,10);*ERROR 位于第 1 行:ORA-02291:违反完整约束条件(SCOTT.E_FK)-未找到父项关键字,将new_emp表的外键约束检查延迟。ALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY DEFERRED;此时,由于将new_emp表外键约束延迟到事务结束后进行检查,因此可以先向new_emp中插入数据,而后向new_dept中插入数据。INSERT INTO new_emp VALUES(1,ZHANG,10);INSERT INTO new_dept VALUES(10,COMPUTER);COMMIT;,操作完后,应将new_emp外键约束检查恢复原来状态。ALTER TABLE new_emp MODIFY CONSTRAINT NE_FK INITIALLY IMMEDIATE;注意:在修改约束的检查延迟性时,如果无法确定约束的名称或需要设置多个约束的延迟性,可以一次性将所有可延迟的约束延迟或恢复。SET CONSTRAINT ALL DEFERRED;SET CONSTRAINT ALL IMMEDIATE;,查询约束信息,ALL_CONSTRAINTSUSER_CONSTRAINTSDBA_CONSTRAINTSALL_CONS_COLUMNSUSER_CONS_COLUMNSDAB_CONS_COLUMNS,从表USER_CONSTRAINTS中查看所有约束的名字、定义 SELECT constraint_name,constraint_type search_condition FROMuser_constraints WHEREtable_name=EMP;从视图 USER_CONS_COLUMNS中查看约束关联的列 SELECTconstraint_name,column_name FROM user_cons_columns WHEREtable_name=EMP;,表参数设置,TABLESPACETABLESPACE子句用于指定表存储的表空间。STORAGE STORAGE子句用于设置表的存储参数。若不指定,则继承表空间的存储参数设置。NITIAL NEXTPCTINCREASEMINEXTENTSMAXEXTENTSBUFFER_POOL(KEEP、RECYCLE、DEFAULT),STORAGE参数设置需注意:如果表空间管理方式为EXTENT MANAGEMENT LOCAL AUTOALLOCATE,则在STORAGE中只能指定INITIAL,NEXT和MINEXTENTS这3个参数;如果表空间管理方式为EXTENT MANAGEMENT LOCAL UNIFORM,则不能指定任何STORAGE子句;如果表空间管理方式为EXTENT MANAGEMENT DICTIONARY,则在STORAG中可以设置任何参数。,数据块管理参数 PCTFREE:用于指定数据块中必须保留的最小空闲空间。PCTUSED:用于指定当数据块空闲空间达到PCTFREE参数的限制后,数据块能够被再次使用前,已占用的存储空间必须低于的比例。INITRANS:用于指定能够并发访问同一个数据块的事务的数量。MAXTRANS:用于指定能够并发访问同一个数据块的事务的最大数量。,LOGGING子句默认为NOLOGGING,即表的创建操作不会记录到重做日志文件中,尤其适合通过查询创建表的情况。使用LOGGING子句,表的创建操作(包括通过查询创建表时的插入记录操作)都将记录到重做日志文件中。LOGGING、NOLOGGINGPARALLEL、NOPARALLELCACHE、NOCACHEMONITORING、NOMONITORING,修改表,基本语法列的添加、删除、修改约束添加、删除、修改表参数修改表结构重组表重命名等为表和列添加注释,ALTER TABLE ADD RENAME COLUMN oldname TO newnameSET UNUSED COLUMN column/single columnSET UNUSED COLUMNS(column1,column2)DROP COLUMN/single columnDROP/multi columnDROP UNUSED COLUMNS,添加列 语法ALTER TABLE table_name ADD(new_column_name datatypeNOT NULLDEFAULT value);示例ALTER TABLE employee ADD(phone VARCHAR2(10),hiredate DATE DEFAULT SYSDATE NOT NULL);,修改列类型 语法ALTER TABLE table_name MODIFY column_name new_datatype;修改表中列类型时,必须满足下列条件:可以增大字符类型列的长度和数值类型列的精度;如果字符类型列、数值类型列中数据满足新的长度、精度,则可以缩小类型的长度、精度;如果不改变字符串的长度,可以将VARCHAR2类型和CAHR类型转换;如果更改数据类型为另一种非同系列类型,则列中数据必须为NULL。,示例ALTER TABLE employee MODIFY ename CHAR(20);ALTER TABLE employee MODIFY phone NUMBER;修改列名 语法ALTER TABLE table_name RENAME COLUMN oldname TO newname;示例 ALTER TABLE employee RENAME COLUMN ename TO employee_name;,删除列 直接删除列语法ALTER TABLE table_name DROP COLUMN column_name|(column1_name,column2_name,)CASCADE CONSTRAINTS;直接删除列示例ALTER TABLE sc DROP COLUMN sno CASCADE CONSTRAINTS;ALTER TABLE employee DROP(phone,hiredate);,将列标记为UNUSED,然后进行删除。ALTER TABLE table_name SET UNUSED COLUMN column_name|(column1_name,column2_name,)CASCADE CONSTRAINTS;示例ALTER TABLE player SET UNUSED COLUMN sage;ALTER TABLE player SET UNUSED(sname,resume);ALTER TABLE player DROP UNUSED COLUMNS;,表参数修改可以对表的参数进行修改,包括存储参数、存储位置、数据块设置等。ALTER TABLE employee PCTFREE 30 PCTUSED 60 STORAGE(NEXT 512K PCTINCREASE 10);注意:表创建后不能对INITIAL、MINEXTENTS两个参数进行修改。,表结构重组将一个非分区的表移动到一个新的数据段中,或者移动到其他的表空间中,通过这种操作可以重建表的存储结构,称为表结构重组。语法ALTER TABLE tbname MOVE TABLESPACE tbs_name 注意 直到表被完全移动到新的数据段中之后,Oracle才会删除原来的数据段;表结构重组后,表中每个记录的ROWID会发生变化,因此该表的所有索引失效,需要重新建立索引;如果表中包含LOB列,则默认情况下不移动LOB列数据和LOB索引段。,表重命名语法ALTER TABLE table_old_name RENAME TO table_new_name;RENAME table_old_name TO table_new_name;说明Oracle自动更新相应的约束、索引和与此表相关的权限;同时以此表为参考的视图、同义词、存储过程和函数为非法。,为表添加注释语法COMMENT ON TALBE table_name IS;为列添加注释语法COMMENT ON COLUMN table_name.column_name IS 注释可以通过以下数据字典来查看.ALL_COL_COMMENTSUSER_COL_COMMENTSALL_TAB_COMMENTSUSER_TAB_COMMENTS,删除表,使用DELETE语句删减表 使用TRUNCATE语句删减表 TRUNCATE TABLE EMP REUSE STORAGE 使用DROP语句删除表 DROP TABLE EMP CASCADE CONSTRAINTS DELETE、TRUNCATE、DROP区别,删除一个表同时,Oracle将执行下列操作:删除该表中所有记录;从数据字典中删除该表定义;删除与该表相关的所有索引和触发器;回收为该表分配的存储空间;依赖于该表的数据库对象处于INVALID状态。,利用OEM管理表,创建表删除表修改表查询表,10.3索引,索引概述索引管理利用OEM管理索引,索引概述,索引概念及作用索引是为了加速对表中元组的检索而创建的一种分散存储结构;是对表而建立的,由除存放表的数据页面以外的索引页面组成,独立于被索引的表;通过使用索引加速行的检索,但减慢更新的速度;快速定位数据,减少磁盘 I/O;Oracle自动使用、维护索引,索引分类惟一性索引与非惟一性索引 平衡树索引与位图索引 单列索引与复合索引函数索引 聚簇索引全局索引与本地索引,索引使用原则导入数据后再创建索引 在适当的表和字段上创建索引 经常查询的记录数目少于表中所有记录总数的5%;经常进行连接查询表,在连接列上建立索引能够显著提高查询的速度;对于取值范围很大的列应当创建B树索引;对于取值范围很小的列应当创建位图索引不能在LONG、LONG RAW、LOB数据类型的列上创建索引;Oracle会自动在PRIMARY KEY和UNIQUE约束的列上创建惟一性索引。合理设置复合索引中的字段顺序,限制表中索引的数目 表中索引数目越多,查询速度越快,但表的更新速度越慢。因为索引越多,维护索引所需开销越大,当更新表时,需要同时更新与表相关的所有索引。为索引设置合适的PCTFREE参数 选择存储索引的表空间默认情况下,索引与表存储在同一表空间中。索引与表存储在同一表空间中,有利于数据库维护操作,具有较高的可用性;反之,若索引与表存储在不同的表空间中,则可提高系统的存取性能,减少硬盘I/O冲突,但是表与索引可用状态可能出现不一致,如一个处于联机状态,另一个处于脱机状态。,管理索引,创建索引修改索引删除索引索引的查询,语法CREATE UNIQUE|BITMAP INDEX index_nameON table_name(column_nameASC|DESC,|expression)REVERSEparameter_list;说明UNIQUE表示建立惟一性索引;BITMAP表示建立位图索引;ASC/DESC用于指定索引值的排列顺序,ASC表示按升序排序,DESC表示按降序排序,缺省值为ASC;REVERSE表示建立反键索引;parameter_list用于指定索引的存放位置、存储空间分配和数据块参数设置。,创建索引,创建非惟一性索引 CREATE INDEX employee_ename ON employee(ename)TABLESPACE users STORAGE(INITIAL 20K NEXT 20k PCTINCREASE 75);创建惟一性索引 CREATE UNIQUE INDEX deptartment_index ON department(dname);创建位图索引 CREATE BITMAP INDEX student_sex ON student(sex);创建反序索引 创建反序索引 CREATE INDEX player_sage ON player(sage)REVERSE;,创建函数索引 CREATE INDEX idx ON employee(UPPER(ename);定义约束时创建索引CREATE TABLE new_employee(empno NUMBER(5)PRIMARY KEY USING INDEX TABLESPACE users PCTFREE 0,ename VARCHAR2(20);,修改索引,修改索引的存储参数 ALTER INDEX employee_ename STORAGE(PCTINCREASE 50);合并索引 ALTER INDEXCOALESCE ALTER INDEX employee_ename COALESCE;,重建索引 ALTER INDEX REBUILDER ALTER INDEX player_sage REBUILD;合并索引与重建索引比较,监视索引 ALTER INDEX MONITORING USAGE ALTER INDEX employee_ename MONITORING USAGE;ALTER INDEX employee_ename NOMONITORING USAGE;索引重命名ALTER INDEXRENAME TO ALTER INDEX employee_ename RENAME TO employee_new_ename;,删除索引,语法DROP INDEX index_name;在下面几种情况下,可以考虑删除索引 该索引不再使用。通过一段时间监视,发现几乎没有查询或只有极少数查询会使用该索引。由于索引中包含损坏的数据块或包含过多的存储碎片等,需要删除该索引,然后重建索引。由于移动了表数据而导致索引失效,索引的查询,DBA_INDEXES、ALL_INDEXES、USER_INDEXES包含索引的基本描述信息和统计信息,包括索引的所有者、索引的名称、索引的类型、对应表的名称、索引的存储参数设置、由分析得到的统计信息等信息DBA_IND_COLUMNS、ALL_IND_COLUMNS、USER_IND_COLUMNS包含索引列的描述信息,包括索引的名称、表的名称和索引列的名称等信息DBA_IND_EXPRESSIONS、ALL_IND_EXPRESSIONS、USER_IND_EXPRESSIONS 包含函数索引的描述信息,通过该视图可以查看到函数索引的函数或表达式V$OBJECT_USAGE包含通过ALTER INDEXMONITORING USAGE语句对索引进行监视后得到的索引使用信息。,利用OEM管理索引,创建索引修改索引删除索引查询索引,10.4索引化表,索引化表概念创建索引化表设置溢出存储修改索引化表利用OEM管理索引化表,索引化表概念,索引化表(Index-Organized Table,IOT)是一种特殊的表,它按B树的索引结构来组织和存储数据,将表的数据和索引的数据存储在一起。主要适合于经常通过主键查询整个记录或部分记录的情况,表中记录的存放顺序与主键的顺序一致。索引化表类似于B树结构,不过索引条目不是标准B树结构中索引值与ROWID这样的结构,而是主键列与非主键列形式的结构。,创建索引化表,说明在CREATE TABLE语句中指定ORGANIZATION INDEX关键字必须建立一个PRIMARY KEY 约束 示例CREATE TABLE new_student(sno NUMBER PRIMARY KEY,sname CHAR(10),sage NUMBER,sex CHAR(2)ORGANIZATION INDEX TABLESPACE USERS;,可以通过子查询创建索引化表 CREATE TABLE new_emp(empno PRIMARY KEY,ename)ORGANIZATION INDEX AS SELECT empno,ename FROM emp;注意利用子查询创建索引化表时,必须指定主键列和其他所有列,指定的列的个数必须与查询语句中目标列个数一致。,设置溢出存储,所谓的溢出存储是指将索引化表中每个记录分成两部分,其中一部分(包含主键列)保存在索引化表自身中(以索引的树状结构存储,称为索引条目部分),而另一部分保存在溢出表空间中(以标准表的堆结构存储,称为溢出部分)。若要启用溢出存储功能,必须在创建索引化表时指定OVERFLOW子句指定溢出部分的存储空间,同时使用PCTTHRESHOLD子句或INCLUDING子句来设置溢出方式。,用PCTTHRESHOLD设置溢出存储 示例CREATE TABLE iot_pct(ID NUMBER PRIMARY KEY,col1 VARCHAR2(20),col2 VARCHAR2(10),col3 NUMBER)ORGANIZATION INDEX TABLESPACE USERS PCTTHRESHOLD 30 OVERFLOW ABLESPACE ORCLTBS1;,使用PCTTHRESHOLD子句设置溢出比例时注意:溢出存储是以列为单位,一个列要么全部保留在索引条目中,要么全部溢出;列的顺序主要取决于创建表时的列的定义顺序,但是Oracle会自动将主键列移动到非主键列的前面,保证主键列保存在索引条目中;PCTTHRESHOLD子句所指定的比例必须包含索引化表中所有主键列。,用INCLUDING设置溢出存储 示例CREATE TABLE iot_pct_include(ID NUMBER PRIMARY KEY,col1 VARCHAR2(20),col2 VARCHAR2(10),col3 NUMBER)ORGANIZATION INDEX TABLESPACE USERS PCTTH

    注意事项

    本文(oracle第10章模式对象.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开