oracle数据库对象的创建与使用.ppt
第5章 数据库对象的创建与使用 5.1 数据库对象概述 Oracle数据库的基本对象表(table)过程(procedure)快照(snapshot)JAVA类索引(index)函数(function)快照日志(snapshot log)JAVA源视图(view)触发器(trigger)用户类型(user type)高级队列序列(sequence)包(package)数据库链接(databse link)维(Dimension)同义词(synonym)包 体(package body)簇(Cluster)Oracle10g对象及模式组织方式对象及模式组织方式表表表表 table table视图视图视图视图 view view函数函数函数函数 function function过程过程过程过程 procedure procedure 触发器触发器触发器触发器 trigger trigger包包包包 package package对象类型对象类型对象类型对象类型 object type object type 索引索引索引索引 index index同义词同义词同义词同义词 synonyms synonyms序列序列序列序列 sequence sequence用create table命令创建表 SQLcreate table dept(deptno number(2)not null,SQLcreate table dept(deptno number(2)not null,dname varchar2(14 byte),dname varchar2(14 byte),loc varchar2(13 byte),loc varchar2(13 byte),constraint constraint pk_dept_1pk_dept_1 primary key(primary key(deptnodeptno)using index tablespaceusing index tablespace rensh_app rensh_app storage storage(initial 64k next 5k minextents 1 maxextents (initial 64k next 5k minextents 1 maxextents 2147483645 pctincrease 1 freelists 1 freelist groups 1)2147483645 pctincrease 1 freelists 1 freelist groups 1)pctfree 10 initrans 2 maxtrans 255)pctfree 10 initrans 2 maxtrans 255)tablespace rensh_app pctfree 10 pctused 40 tablespace rensh_app pctfree 10 pctused 40 initrans 1 maxtrans 255 initrans 1 maxtrans 255 storagestorage(initial 64k next 0k minextents 1(initial 64k next 0k minextents 1Maxextents 2147483645 pctincrease 0 Maxextents 2147483645 pctincrease 0 freelists 1 freelist groups 1)freelists 1 freelist groups 1)logginglogging;注意:两个非常重要的伪列:rowid和rownum。rowid是伪列(pseudo-column)。是行数据在一个特定数据文件中的物理位置。在任何数据库中行的rowid是不相同的。由于rowid直接指向行数据的物理位置,所以,通过使用rowid来删除或更新行会比通过全表扫描来确定行从而删除或更新行要快得多。rownum只是从表中选择出的行的序号,与每个具体的行无关。在原来已有表的基础上建立一个新表命令格式:SQLCreate table as select from old_tablewhere condition;常见的表管理命令 使一个表上的约束失效alter table emp_infor disable constraint fk_emp_deptno;将一个表更名alter table rename to;更名一个列alter table rename column to;删除一个列alter table drop column;将一个列设置成不可用(将该列设置成unused后,使用户感觉到该列是不存在的,即使查询也看不到)SQLalter table employee set unused column job;删除表中不可用的列 SQLalter table test drop unused columns;5.3 表的类型 根据表的存储结构可分为以下几类:常规表,即通常使用的表,也称为堆表(Heap Table).全局临时表(Global Temporary Table),简称为GTT,也称为临时表.组织索引表Index Organized Table,简称IOT.外部表(External Table)分区表(Partitions Table)蔟表(Clustered Table)嵌套表(Nested Table)对象表(Object Table)XML表5.3.2 全局临时表(全局临时表(Global Temporary Table)它总是在用户的临时表空间中创建。全它总是在用户的临时表空间中创建。全局临时表或者是包含特定的会话数据,局临时表或者是包含特定的会话数据,或者是包含特定的事务数据。或者是包含特定的事务数据。临时表与常规表之间的区别(1)临时表在创建后并不象其他常规表一样分配段(segment)。(2)不同的会话使用相同的GTT会得到不同的临时表空间。(3)当会话或事务结束时,临时段自动被清除。临时表也会随着数据库的关闭从临时段中消失。(4)包含特定事务数据的临时表仅在事务打开或活动时可用。一旦事务被提交或回滚关闭,那么,在事务表中的数据则被自动清除。5.3.3 索引组织表(Index Organized Table),简称IOT 所谓索引组织表就是以B树结构共同存储行的主键和数据的一种存储方式。数据是存储在B树的叶子节点上。何时使用IOT最合适呢?避免冗余数据存储。当表中若干个列组成主关键字且在一行中占较大部分时,建议使用IOT。开发大型数据库(VLDB)和联机事务处理OLTP应用时使用IOT。开发时间系列的应用。使用IOT能有效地存储嵌套表。使用可扩展的索引数据。电子商务,互联网及数据仓库。5.3.4 外部表(External Table)定义:外部表就是以数据库内部表的形式定义,且其数据并不在数据库内部存储的一种表。该表与数据库外部某个扁平文件相对应。扁平文件的格式可有许多种,如文本格式、Microsoft Excel格式等。它是获取外部数据的一种手段,与SQL*Loader等同属于析取-转换-装载ETL(Extract,Transform,Load)操作。在使用外部表时,需要使用目录对象。5.3.5 分区表(Partitioning Table)分区包括分区表和分区索引。所谓分区表是按照条件把数据分成若干个较小的且更易于管理的片。分区表中的每个行被明确地指定给一个分区,分区关键字就决定每个行所在的分区。分区关键字可以是从1到16个列的集合。单独存储会带来许多好处:多个分区可减少数据丢失或损坏的可能性。可独立地备份和恢复每个分区。控制每个分区的映射到磁盘驱动器,这对平衡I/O负载是非常重要的。可改善可管理性,易用性和性能。对应用程序来说,分区是透明的,而标准的DML语句只与分区的表有关。5.3.6 簇表(Clustered Table)簇(cluster)是管理表中数据的一种方法。簇是由共享相同数据块的一组表组成。这些表可以是一个或多个,有可共享的公共列并一起使用。这些表公共列称为簇关键字。但选择关键字列时也有一些原则:一个好的聚簇关键字应有足够多的唯一值,即对应于同一个关键字值的行有很多。这样,与之相对应的行才能填充满一个数据块。何时使用簇表呢?(1)在创建簇表之前,必须先创建簇。簇表的使用依赖于簇。但是,在向簇表插入和更新数据之前,必须在该表上手工创建聚簇索引。使用聚簇并不影响在簇表上创建其他的索引。(2)表与表之间有主/从参照关系,主要用于经常性的连接查询操作。(3)这些表以只读查询为主,很少或不做插入更新操作。5.3.7 嵌套表(Nested Table)如果表中列被定义的数据类型是一个表类型,则该表类型就可称为嵌套表,即表中之表。包含嵌套表的表称为主表。嵌套表可被用于数据库表列的数据类型或者是对象表类型的一个属性。创建嵌套表的具体步骤为:(1)定义表类型(2)创建主表,格式与常规表相同。5.4 完整性约束 数据完整性的基本约束:检查(Check)-在数据字典和系统中用C表示;主键(Primary key)-用P表示;外键(Foreign Key)-用R表示;唯一性(Unique)-用U表示;视图上的只读(Read Only)-用O表示;视图上选择(Check Option On a View)-用V表示。5.5 索 引 在Oracle中,有以下几种类型的索引:B树索引(B*Tree Indexes):大多数创建的常规索引都属B树索引。簇索引和唯一性索引都以B树作为基本结构。基于函数的索引(Function-Based Indexes)位图索引(Bitmap Indexes)反向键索引(Reverse Key Indexes)降序索引(Descending)压缩索引(Compressed Indexes)本地和全局索引(Local And Global Indexes)5.5.1 B树索引B树索引是最为常见的索引结构,也是多数索引采用的默认结构。这种结构特别适合于检索高基数数据列,即该列的唯一索引值个数与其数据行数之比接近1的情况。换言之,被索引的列值很少有相同的值。5.5.2 位图索引位图索引 位图索引也同样采用位图索引也同样采用B树结构,只是索引值树结构,只是索引值全部集中在叶子节点。位图中的每个位对应全部集中在叶子节点。位图中的每个位对应于一个于一个rowid。如果位值为。如果位值为1 1,则意味着对应,则意味着对应于于rowid的行包含该索引键值。所以,位图的行包含该索引键值。所以,位图的映射功能是将数据位的位置转化成实际的的映射功能是将数据位的位置转化成实际的rowid。如果索引列很少有唯一的值,则位图索引具如果索引列很少有唯一的值,则位图索引具有很高的空间效率。有很高的空间效率。创建位图索引格式:SQLcreate bitmap index on()pctfree tablespace;SQLcreate bitmap index bitmapindx_sex on employee(sex)pctfree 5 tablespace app_sml;