Oracle Database 10g基础教程 教学课件 ppt 作者 7-302-09864-6k ch11

上传人:E**** 文档编号:89349618 上传时间:2019-05-23 格式:PPT 页数:25 大小:88KB
返回 下载 相关 举报
Oracle Database 10g基础教程 教学课件 ppt 作者  7-302-09864-6k ch11_第1页
第1页 / 共25页
Oracle Database 10g基础教程 教学课件 ppt 作者  7-302-09864-6k ch11_第2页
第2页 / 共25页
Oracle Database 10g基础教程 教学课件 ppt 作者  7-302-09864-6k ch11_第3页
第3页 / 共25页
Oracle Database 10g基础教程 教学课件 ppt 作者  7-302-09864-6k ch11_第4页
第4页 / 共25页
Oracle Database 10g基础教程 教学课件 ppt 作者  7-302-09864-6k ch11_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Oracle Database 10g基础教程 教学课件 ppt 作者 7-302-09864-6k ch11》由会员分享,可在线阅读,更多相关《Oracle Database 10g基础教程 教学课件 ppt 作者 7-302-09864-6k ch11(25页珍藏版)》请在金锄头文库上搜索。

1、2019年5月23日,第1页,第11章 管理表,Oracle Database 10g基础教程 清华大学出版社,教学目标 教学难点和重点 教学过程,2019年5月23日,第2页,教学目标,理解和掌握表的基本概念 理解和掌握创建和维护各种类型表的技术 了解表的基本特征 理解和掌握修改表技术 理解和掌握删除表技术 理解truncate table的特点,2019年5月23日,第3页,教学难点和重点,表的基本概念 创建和维护各种类型的表 表的基本特征 修改表技术 删除表技术 truncate table的特点,2019年5月23日,第4页,教学过程,11.1 概述 11.2 表类型 11.3 表的特

2、性 11.4 修改表 11.5 删除表 11.6 truncate table,2019年5月23日,第5页,11.1 概述,在Oracle系统中,表是数据库中的主要对象,是真正存储信息的对象。 一般而言,表具有这些特征:代表实体、表名在数据库中是唯一的、由行和列组成、行的顺序是任意的、列的顺序是任意的、列名在表中是唯一的。,2019年5月23日,第6页,表的属性,对于所有类型的表,Oracle都允许开发人员和管理员规定各种表属性,他们会确定如下内容: 哪一个表空间包含表; Oracle怎样将表物理存储在磁盘上; 当从磁盘读取表数据时,Oracle怎样将他们与内存进行映射; Oracle怎样控

3、制表上特定操作的日志,2019年5月23日,第7页,11.2 表类型,在Oracle系统中,最常使用的表类型包括堆表、外部表、索引组织表、临时表、分区表、簇表、散列簇表等。 在本节中,我们将学习这些最常使用的表类型,具体内容包括怎样建立他们和为什么要使用他们。,2019年5月23日,第8页,堆表,在Oracle系统中,最基本的表的类型是堆表。这里堆的含义是:数据在磁盘上随机存储的方式。实际上,堆的含义是乱七八糟。一般地,Oracle系统在将数据行写入数据块时不会考虑其他行的存储位置。当向堆表中插入数据时,数据库会将该数据写入第一个有足够自由空间的段中。当修改和删除数据行时,就会为新的插入提供可

4、用的空间。 下面,通过一个示例讲述如何创建和使用堆表。,2019年5月23日,第9页,外部表,外部表是从Oracle 9i开始增加的表。外部表是在Oracle数据库之外的文件系统中存储的只读表。在Oracle 9i以前,使用操作系统上的普通文件中存储数据的惟一方式就是通过SQL*Loader工具将其加载入数据库,或者使用insert语句把普通文件中的数据插入到数据库的表中,手工建立堆表。但是,这种加载方式的问题是,如果源数据改变了,那么加载过来的数据也必须手工维护,否则这些加载的数据就没有意义了。 通过使用外部表,就无须将数据复制到数据库中并且强制更新,我们可以让数据依然保留在普通文件中,并且

5、允许数据库对其进行实地读取。 下面,通过一个示例讲述外部表的用法。,2019年5月23日,第10页,索引组织表,索引组织表(index organization table,IOT)可以存储索引,以便提高查询性能。索引组织表是以牺牲插入性能和更新性能为代价而提供查询性能的方式。 假如,要使用英汉大词典查询一些词的含义,那么当用户在词典中搜索词时,用户就要将书打开到这个词的附近位置。用户可以根据词的字母顺序指导在哪里找到这个词,然后再基于用户打开书的位置进行前后搜索。这是B树的实际示例,也是索引组织表的典型示例。,2019年5月23日,第11页,临时表,临时表是那些只在事务处理和会话期间存在数据

6、的表。数据会在事务处理或会话开始之后插入临时表,当事务处理或会话完成之后就会被删除。通过采用这种方式,开发人员就可以在他们希望执行的应用逻辑运行期间访问临时存储区域。 对于Oracle的临时表来说,就如同用户建立常规表一样,用户只需建立一次临时表,以后就可以在使用他们的时候使用这些临时表。相对于堆表来说,因为其他用户决不会使用这些记录,所以临时表不需要在他们包含的记录上维护锁定。,2019年5月23日,第12页,其他表类型,除了前面讲述的表类型之外,还需要提及的表类型包括分区表、簇表、散列簇表等。 下面,简单介绍这几种表类型。,2019年5月23日,第13页,11.3 表的特性,表的特性将会决

7、定怎样创建表、怎样在磁盘上存储表,以及当表生成和可以使用之后,应用最终执行的方式。 本节将讨论可以在create table和alter table语句中使用、以规定应用中表行为的各种表的属性。,2019年5月23日,第14页,tablespace子句,在创建表时,必须将表放置在某个表空间中。该表空间可以使用tablespace子句指定。tablespace子句是可选的,如果没有明确规定tablespace子句,那么所建立的表就会存放在建立表的用户帐户默认的表空间中。,2019年5月23日,第15页,logging和nologging,为了提高数据库的可靠性,记录数据库中所有数据的改变,那么可

8、以在创建表时使用logging子句。这时表示对数据库的操作会产生重做日志。如果所发生的故障使数据不能从内存传递到数据库的数据文件中,那么就可以从重做日志中获取这些改变。这样,可以防止数据丢失,提高系统的可用性。 当在create table语句中规定了nologging子句时,就认为这个表是非日志记录表。在这个表上进行的操作可能会导致数据库中很少的日志记录。,2019年5月23日,第16页,storage子句,在数据库中,有效管理空间消耗将会直接影响数据库增长和存储数据的能力。当用户在Oracle中创建表、索引等对象时,用户可以规定这些对象怎样消耗磁盘上的空间。这需要使用对象的storage子

9、句来完成。如果没有使用storage子句创建表空间,那么存储属性就会获取默认值。当创建其他对象时,他们会继承表空间的存储属性。例如,如果表空间具有minextents 5属性,那么所创建的表也会获取minextents 5属性。 当规定create tables命令中的storage子句时,用户可以使用这些参数:initial、next、pctincrease、minextents、maxextents等。,2019年5月23日,第17页,cache和nocache,当在Oracle中执行全表搜索时,读入缓存区的数据块将会存储在最近最少使用列表的最近最少使用的一端。这就意味着只要执行常规查询,

10、就必须当从缓存区中读取数据时,就会将这些数据块换出缓存区。 当创建表时,cache子句可以忽视这种行为。当在使用cache子句建立的表上执行全表搜索时,就会将数据块读入缓存区,并且放置到最近最常使用的一段。 nocache是建立表时的默认值,如果明确指定cache子句时所建立的表就是nocache表。从nocache表中读取的数据块通常会被交换出SGA。,2019年5月23日,第18页,11.4 修改表,在Oracle数据库中创建表并不困难,但是通过一次尝试就创建一个完美的表几乎是不可能的。当表创建之后,在使用过程中,经常需要进行修改。修改表可以使用alter table命令,常见的修改表的操

11、作包括: 在表中增加、修改或删除列 重命名表 将表移动到新的表空间 改变表的存储属性 改变表的某些特征,2019年5月23日,第19页,改变表中的列,在项目的开发阶段,经常需要对表进行修改,以便适应新的数据需求和各种功能要求。从性能上讲,删除表并且对其进行重新创建是不可行的。Oracle提供了增加新列、修改已有列,以及从已有标中删除列而不影响表中其他数据的能力。 下面,通过一个示例,讲述如何改变表中的列。,2019年5月23日,第20页,not null列约束,只有当表中没有记录时,用户才能规定使用not null作为约束的列。这是因为当在列上应用not null约束时,Oracle就会尝试验

12、证表中的所有行。如果已经存在记录,那么这些记录就不能够通过这些验证,因此也就不能够增加约束,进而也不能够增加列。但是,有一个解决该问题的变通方式。下面,通过一个示例讲述如何在新增的列上使用not null约束。,2019年5月23日,第21页,删除列和标注不用列,用户不仅可以修改已经存在于表中的列,而且还可以完全删除他们。在Oracle 8i以前,表中所有没有使用的列要么只好作为一种附加负载承担,要么使用create table as select语句重新创建不包含那些没有用的列的新表。但是,从Oracle 8i开始,这个问题得到了解决。用户可以使用下面的语句删除列: alter table

13、drop column ,2019年5月23日,第22页,重命名表,在Oracle系统中,用户可以根据需要,重新命名表的名称。 重新命名表的名称可以使用alter table rename to语句来完成。 在如图11-25所示的示例中,把people表更名为employees,结果people表就不存在了,2019年5月23日,第23页,改变表特性,经常地,在创建表时,不可能知道在他们所支持的应用的生命期内,施加给这些表的所有要求。我们试图尽可能地具有前瞻性地构建表,但是我们会不时地意识到通过改变表的属性可以获得更好的行,或消耗更少的资源。,2019年5月23日,第24页,11.5 删除表,

14、用户在维护数据库时,可以执行的另外一个任务就是删除表。经常碰到这种情况,有必要将一个表从数据库中删除,或用户也可以删除为特定任务创建、但是不再需要的表。 可以使用drop table语句删除表。drop table语句的语法形式如下: drop table cascade constraints;,2019年5月23日,第25页,11.6 truncate table,truncate table是用来删除表中所有数据、但是不删除表本身的DDL语句。同时,该表的索引也被删除。truncate table命令能够用于堆组织表、索引组织表、临时表等。truncate table命令的语法形式如下: truncate table schema. drop storage | reuse storage,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号