日期:2014-05-16  浏览次数:20559 次

Oracle --- 数据类型
一)数据类型的分类
    Oracle支持的数据类型可以分为四个基本种类:字符数据类型、数字数据类型、日期数据类型以及表示其它数据的数据类型。
     属于字符数据类型的有: char/varchar/varchar2/nvarchar/nvarchar2/long
    属于数字数据类型的有: number
    属于日期数据类型的有: date/timestamp
    属于其它数据类型的有: raw/long raw/rowid/CLOB/NCLOB/BLOB/BFILE

二)字符数据类型
1)char
    char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节;
    char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字。
    char适用于长度比较固定的,一般不含中文的情况

2)varchar
    varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节。
    varchar同样区分中英文

3)varchar2
    varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准varchar,不同在于,varchar2用null代替varchar的空字符串

varchar/varchar2适用于长度不固定的,一般不含中文的情况

4)nvarchar
    nvarchar是长度不固定的
    nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数

5)nvarchar2
    nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占两个字节

nvarchar/nvarchar2适用于存放中文

6)long
    LONG数据类型可以存放2GB的字符数据,它是从早期版本中继承来的。现在如果想存储大容量的数据,Oracle推荐使用CLOB和NCLOB数据类型。在表和SQL语句中使用LONG类型有许多限制。所以已经不大推荐使用了。

三)数字数据类型
    Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。
    NUMBER数据类型可以有两个限定符,如:
    column NUMBER (precision, scale)
    precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。
    scale表示数字小数点右边的位数,scale默认设置为0.如果把scale设成负数,Oracle将把该数字取舍到小数点左边的指定位数。

四)日期数据类型
1)date
    可以存储月,年,日,世纪,时,分和秒。度量粒度是秒

2)timestamp
    它包括了所有DATE数据类型的年月日时分秒的信息,而且包括了小数秒的信息。
to_char函数支持date和timestamp

五)其它数据类型
1)raw
    用于存储基于字节的数据,最多能存储2000个字节,它没有默认大小,所以在使用时要指定大小,可以建立索引。

2)long raw
    用于存储可变长度的二进制数据,最多能存储2GB,它受的限制和LONG类型一样

3)rowid
    ROWID是一种特殊的列类型,称之为伪列(pseudocolumn)。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问。Oracle数据库中每行都有一个伪列。ROWID表示行的地址,ROWID伪列用ROWID数据类型定义。
    ROWID与磁盘驱动的特定位置有关,因此,ROWID是获得行的最快方法。但是,行的ROWID会随着卸载和重载数据库而发生变化,因此建议不要在事务 中使用ROWID伪列的值。例如,一旦当前应用已经使用完记录,就没有理由保存行的ROWID.不能通过任何SQL语句来设置标准的ROWID伪列的值。
    列或变量可以定义成ROWID数据类型,但是Oracle不能保证该列或变量的值是一个有效的ROWID.

4)BLOB
    它可以存储较大的二进制对象;如图形,音视频剪辑。

5)CLOB
    一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节

6)NLOB
    一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;最大为4G字节;储存国家字符集

7)BFILE
    包含一个大型二进制文件的定位器,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库服务器上的外部LOB;最大大小为4G字节.