数据表简称表,是ORACLE中主要的数据存储容器,表中的数据被组织成行和列。表中每一个列均有一个名称,并且每个列都有一个指定的大小和类型。如varchar2(10)
数据库中每一个表都被一个模式或用户所拥有,因此表是一个典型的模式对象。在创建数据表时,Oracle 将一个指定的表空间中分配存储空间。最初创建的表是一个空的逻辑存储结构,其中不包含任何数据记录。
数据类型
1、char类型
CHAR数据类型。存储固定长度字符串,范围为1-2000个字节,一旦定义了char类型列,就会一直保持声明时所规定的长度大小。空余部分用空格自动填充。
VARCHAR2数据类型。与char类型相似,存储字符串数据。字符串可以根据实际长度自动调整。
2、数值数据类型
数值数据类型的字段用于存储带符号的整数或浮点数。NUMBER数据类型具有精度(PRECISION)和范围(SCALE)。精度指所有数字位的个数,范围指小数的位数。number(5,2) 。
3、日期数据类型
DATE。数据类型存储日期时间比使用字符数据类型进行存储更简单,常用的如SYSDATE获取系统当前日期。to_date()函数转换日期形式
4、LOB数据类型
LOB数据类型用于大型的、未被结构化的数据。
BLOB类型。用于存储二进制对象,典型的BLOB存储对象可以包括图像、音频文件、视频文件等。存储最大为128M的二进制对象。
CLOB类型。存储字符格式的大型对象。Oracle首先把数据转换成Unicode 格式编码,然后存储在数据库中。
BFILE类型。存储二进制格式文件,在bfile类型的字段最大为128M的二进制文件作为操作系统文件存储在数据库外部,文件的大小不能超过操作系统限制,BFILE类型字段中仅保存二进制文件的指针,并且bifle字段为只读不能通过数据库进行修改。
5、ROWID数据类型
用于保存表中每条记录的物理地址。
创建表
创建表的结构
create table student(
stu_no number(10) not null,
stu_name varchar2(8),
sex char(2),
age int,
regdate date default sysdate
);
数据表特性
1、存储参数
当用户在创建表时,Oracle允许用户指定该表如何使用磁盘的存储空间。
通过 STORAGE 子句设置存储参数,这样可以控制表中盘区分配管理方式。
对于指定盘区的管理方式为AUTOALLOCATE(自动化管理) 则可以在storage子句中指定 INITIAL 、NEXT、MINEXTENTS 这三个存储参数的值为表分配数据段初始化盘区大小,以后盘区分配由Oracle自动管理。
对于指定盘区管理方式为UNIFORM(同等大小管理) 这时不能为表指定任何storage子句,盘区的大小是统一大小。
参数NEXT用于指定为存储表中的数据分配的第二个盘区大小,该参数在字典管理中起作用,在本地化管理表空间中不再起作用,因为随后分配的盘区将有oracle 自动决定其大小。
参数MINEDXTENTS用于指定允许为表中的数据分配的最小盘区数目,在本地化管理表空间中不再起作用,
主要设置INITIAL参数,用于指定为表分配的第一个盘区的大小(KB或MB)为单位。
create table student(
stu_no number(10) not null,
stu_name varchar2(8),
sex char(2),
age int,
regdate date default sysdate
)
storage(initial 256k);
2、数据块管理参数
对于一般不带有LOB类型的数据表而言,一个数据块可以存放表的多行记录。
(1)PCTFREE和PCTUSED 用于控制数据块中空闲的使用方法。
对于本地化管理的表空间而言,如果使用segment space management 子句设置段的管理方式为(auto)自动,则用户不需要设置数据块管理的这两个参数。
如果使用segment space management manual (手动管理)设置段的管理方式。可以通过这两个参数对数据块中空闲空间手动管理。
PCTFREE用于指定数据库中必须保留的最小空间比例,当达到参数限制后该数据块将被标注为不可用,默认为10。这些空间用于保存更新记录时增加的数据。 pctfree参数值越小,为现有数据更新所预留的空间越少,值越高则产生磁盘浪费,如果设置太低,可能导致无法容纳一行数据记录而产生迁移记录和链接记录。
PCTUSED用于设置数据库可用的界限。
实际使用中,当使用update 较多,且更新操作会增加记录的大小时,可以将pctfree设置的大些,保证保存的数据在原数据块中,而将pctused设置的小一些,这样频繁的进行更新操作时,能够减少由于数据块在可用不可用状态的反复切换而造成的系统开销。
当使用insert delete 操作多,并且update更新操作不会增加记录的大小时,可以设置pctfree较小,pctused设置较大,以便尽快重新利用被delete操作释放的存储空间。
(2)INITRANS参数用于指定一个数据块所允许的并发事务数目。当一个事务访问表中的一个数据块时,该事务会在数据块的头部保存一个条目,以标识该事务正在使用这个数据块,当事务结束时,所对应的条目将被删除。
如果设置initrans参数值较大,则事务条目将占用过多存储空间,从而减少了用来实际存储数据的存储空间,只有当一个表有较多的事务同时访问时,才应当设置较高的inintrans。
create table student(
stu_no number(10) not null,
stu_name varchar2(8),
sex char(2),
age int,
regdate date default sysdate
)
storage(initial 256k)
pctfree 20
pctused 40
initrans 10;
3、重做日志参数
重做日志记录了数据块数据的改变情况,这样如果发生故障导致数据不能从内存中写入到数据文件时,就可以从日志文件中获取被操纵的数据防止数据丢失。
create table student(
stu_no number(10) not null,
stu_name varchar2(8),
sex char(2),
age int,
regdate date default sysdate
)
storage(initial 256k)
pctfree 20
pctused 40
initrans 10
nologging ;--对DDL操作不产生日志
4、缓存参数 cache 。对于比较小又经常查的表,在创建时指定cache子句 利用缓存提高对表的查询效率。