执行CREATE TABLE语句时,默认得到的表类型就是堆组织表。其他类型的表结构需要在CREATE TABLE语句本身中指定它。
堆组织表中,数据以堆的方式管理。增加数据时,会使用段中找到的第一个能放下此数据的自由空间。从表中删除数据后,允许以后的INSERT和UPDATE重用这部分空间。堆(heap)是一组空间,以一种随机的方式使用。因此,无法保证按照放入表中的顺序取得数据。
有1个简单的技巧,来查看对于给定类型的表,CREATE TABLE语句中主要有哪些可用的选项。
首先,尽可能简单地创建表,然后使用DBMS_METADATA来查询这个表的定义。
create table t(x int primary key, y clob);
select dbms_metadata.get_ddl( 'TABLE', 'T' ) from dual;
- DBMS_METADATA.GET_DDL('TABLE','T')
- ------------------------------------------------------------------------
- CREATE TABLE "TONY"."T"
- ( "X" NUMBER(*,0),
- "Y" CLOB,
- PRIMARY KEY ("X")
- USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 NOCOMPRESS LOGGING
- TABLESPACE "USERS" ENABLE
- ) SEGMENT CREATION DEFERRED
- PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
- TABLESPACE "USERS"
- LOB ("Y") STORE AS BASICFILE (
- TABLESPACE "USERS" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION
- NOCACHE LOGGING )