一、Oracle数据库支持的大对象数据类型。
在Oracle数据库中为了更好的管理大容量的数据,专门开发了一些对应的大对象数据类型。具体的来说,有如下几种:
一是BLOB数据类型。它是用来存储可变长度的二进制数据。由于其存储的是通用的二进制数据,为此在数据库之间或者在客户端与服务器之间进行传输的时候,不需要进行字符集的转换。为此其传输的效率比较高,而不容易出现乱码现象。
二是CLOB数据类型。他主要是用来存储可变长度的字符型数据,也就是其他数据库中提到的文本型数据类型。虽然说VARCHAR2数据类型也可以用来存储可变长度的字符型数据,但是其容量是非常有限的。而现在这个CLOB数据类型,其可以存储的最大数据量是4GB。而且在定义这个数据类型的时候,不需要指定最大长度。在定义Varchar2数据类型时需要指定。
三是NCLOB数据类型。这个数据类型跟CLOB数据类型相似,也是用来存储字符类型的数据,不过其存储的是Unicode字符集的字符数据。同样,在这个数据类型中,也可以存储多达4GB容量的数量,而且在定义数据类型时不需要指定长度,数据库会自动根据存储的内容来进行调节。
四是BFILE数据类型。看看名字就知道跟其他的LOB数据类型不同。其是在数据库外面存储的可变二进制数据,其最多也可以存储4GB的数据。这里需要注意的是,在不同的操作系统上其存储的数据容量可能是不同的。这个数据类型的特殊在于其在数据库之外存储实际数据。也就是说,跟其他大对象数据类型不同,其数据并不是存储在数据文件中,而是独立于数据文件而存在的。在这个字段中,其只存储了指针信息。
二、不需要为大对象数据类型指定长度。
以上提到的一些大对象数据类型有一个特点,即全部都是可变长度的数据类型,而且在定义时不需要指定其最大的长度。虽然在数据库内建数据类型中也有一些可变长度的数据类型,但是,其往往需要在定义时指定最大的长度。实际存储数据时不能够超过这个长度。不过这些大容量数据类型则没有这个限制,只要在存储时不要超过其最大4GB的容量限制即可。由于其都是可变长度的数据类型,为此其实际存储的空间为根据数据容量的大小而改变。即如果某个数据大小只有1GB,那么其实际在硬盘中存储的空间就只有1GB,而不会是4GB。这就是可变长度数据类型的特征。像其他的一些不可变长数据类型,如果存储的数据容量不够的话,会以空格填充。不过现在这个大对象数据类型由于是可变长度的数据类型,其实际存储的长度会根据世纪数据来进行调整。为此可以最大限度的提高硬盘空间的使用率。