Oracle的内置数据类型可以分为3大类,即标量数据类型、几何数据类型和关系数据类型。下面分别介绍这些数据类型:
1、表量数据类型
标量数据类型是一般的数据类型,可以返回标量值。标量数据类型可以由字符数据类型、数字数据类型、日期数据类型、RAW数据类型、大对象数据类型和行数据类型组成。
字符数据类型可以用来存储各种字符数据,这些字符数据既可以是定长度数据类型,也可以是变长度数据类型。定长度数据类型用来存储固定长度的字符。如果实际的字符长度小于指定的长度,则不足位数在前面添加空格补齐。例如,char和nchar都是定长数据类型。nchar数据类型可以存储国际语言。对应变长度的数据类型来说,实际存储字符长度依据字符数据的长度来定。这些数据类型包括varchar2和nvarchar2.
数字数据类型总是变长类型的。这些数据类型包括number,他们可以用来存储各种数字数据类型,日期数据类型是Date,可以用来存储各种日期。raw数据类型用来存储字节比较小的二进制数据类型,其存储的最大字节数是2000.
在oracle 9i系统中,提供了6中用来存储大对象(Large OBject ,LOB)的数据类型这些数据类型是:
(1)CLOB和LONG数据类型用来存储固定长度的字符数据类型;
(2)NCLOB用来存储固定长度的国际数据类型;
(3)BLOG和LONG RAW数据类型用来存储非结构化的数据类型;
(4)BFILE数据类型用来在操作系统中存储非结构化数据。
对于LONG和LONG RAW数据类型来说,必须遵循下列一些规则:
(1) 每个表只能有一个这种数据类型的列;
(2)最大字节数是2GB;
(3)可以使用select语句返回数据;
(4)可以联机存储数据;
(5)不支持对象类型;
(6)串行访问数据。
对于LOB数据类型,在使用过程中,必须遵循下列一些规则:
(1)每个表可以有多个这种数据类型的列;
(2)最大字节数是4GB;
(3)使用select语句只能返回存储这种数据的位置;
(4)既可以联机存储,也可以脱机存储;
(5)支持对象类型;
(6)随机访问数据。
行数据类型包括ROWID和UROWID。ROWID和UROWID是一种伪列,它可以与表中的其他列同时被访问。这种数据类型具有下列一些特征:
(1)ROWID和UROWID是表中每一行数据的唯一标示符;
(2)ROWID和UROWID不能作为一个列明确地存储;
(3)虽然ROWID和UROWID不能作为某个行的物理位置,但是可以用来定位行的位置;
(4)ROWID和UROWID提供了访问表中数据行的最快方式;
(5)ROWID和UROWID存储在索引中。
2、集合数据类型
集合数据类型用来存储存储了对象的对象。在oracle系统中,有两种集合数据类型,即变长数组(VARRAY)数据类型和嵌套表(TABLE)数据类型。
VARRAY数据类型用来存储比较小的数组元素,如客户的电话号码。这种数据类型具有下面一些特征:
(1)数组时有序的数据元素集;
(2)数组中的所有元素都具有相同的数据类型;
(3)每一个元素都有一个索引;
(4)数据元素的数量就是数组的大小;
(5)允许数组的大小是变长的。
TABLE数据类型提供了定义表中一列的方式。这样,这种数据类型的列可以用来存储大量记录集。TABLE数据类型具有下列一些特征:
(1)嵌套表是无序的记录集或行集;
(2)嵌套表中的行具有相同的结构;
(3)嵌套表中的数据行与父表分开存储,但是通过指针相对应;
(4)嵌套表的存储特性可以由数据库管理员定义;
(5)嵌套表没有预定义的大小
3、关系数据类型
关系数据类型(REF)用作数据库中的指针。这些数据类型应用要求具有对象类型。例如,订单表中的没一项与产品表中的某一项必须对应。这种数据类型体现了oracle的对象关系特征。