表是Oracle数据库中数据组织的基本单元。Oracle支持多种表,从不同的角度可划分为多种类型:
关系型表(Relational tables)和对象型表(Object tables)
关系型表是最常见的表类型。关系型表是一张二维表,其中“关系”是指不同字段值组合在一起构成的关系,以及表与表之间的关系(也就是外键)。
熟悉Java等面向对象语言的同学应该对“对象”这个概念很熟悉。对象型表是指表中的数据支持封装,继承等面向对象特性的那些表。
堆表(heap-organized table)和索引组织的表(index-organized table)
堆表中的每行数据是无序存储的。CREATE TABLE语句默认创建一个heap-organized table。
一个index-organized table中的行数据则按照primary key的值来排序。对于一些应用程序来说,使用index-organized table可以提高磁盘使用效率和性能。
外部表
当Oracle数据库应用程序必须访问非关系型数据(例如那些存储在HDFS或一个NOSQL数据库中的数据)时,外部表就非常有用了。
由于外部表的数据存储在数据库之外,因此数据库需要存储相关的metadata,才能知道如何访问这些数据。另外由于数据存储在Oracle数据库之外,Oracle并不拥有这些数据,因此不能修改或删除外部表中的数据。
压缩表
可以将堆表中的数据以压缩的形式存储,且这对于那些使用数据的应用程序来说是透明的。
表压缩的工作方式是,将在单独的data block中的那些重复数据压缩。一个block中的所有行和列的重复值仅会在