当前位置:文档之家› Oracle数据库基本数据类型

Oracle数据库基本数据类型

oracle基本数据类型
oracle 数据库中讨论char ,varchar ,varchar2 数据类型!
这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了?
首先我们先来分析3个数据类型的说明:
1。

char
CHAR的长度是固定的,最长2000个字符。

2。

varchar 和 varchar2
可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。

其次也有人认为varchar是最大长度为2000的可变字符串(和sql server中的varchar一致),而varchar2最大长度为4000。

知道了他们的特点我们就来讨论下使用区别
1.char和varchar、varchar2
由于varchar和varchar2用途类似,我们先来讨论char和他们的使用区别:
varchar和varchar2比char节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的
‘以空间换效率’。

varchar和varchar2虽然比char节省空间,但是如果一个varchar和varchar2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用char代替varchar和varchar2会更好一些。

当然还有一种情况就是象身份证这种长度几乎不变的字段可以考虑使用char,以获得更高的效率。

2。

varchar和varchar2
这里就进入重点了,前面的区别我们在sql server中我们已经基本了解了,大家可能都知道,最多也就是复习下,但oracle增加了一个varchar2类型,是大家以前所没有用到过的。

因为oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,还有其他数据中一般都有varchar这个数据类型。

所以我得出了以下结论:
如果想在oracle新版本的数据库兼容就不要用varchar,如果想和oracle 之外其他数据库兼容就不要用varchar2。

ORACLE中的数据类型分类
ORACLE中的数据类型不可谓不多,下面把我这两天来的学习体会写一下吧!
1、字符数据类型:包括我CHAR,VARCHAR2,LONG。

CHAR型可以存储字母数字值,这种数据类型的
列长度可以是1到2000个字节。

如果未指明,则默认其占用一个字节,如果用户输入的值小于指定的长度,数据库则用空格填充至固定长度。

VARCHAR2型其实就是VARCHAR,只不过后面多了一个数字2,VARCHAR2就是VARCHAR的同义词,也称别名。

数据类型大小在1至4000个字节,但是和CHAR不同的一点是:当你定义了VARCHAR2长度为30,但是你只输入了10个字符,这时VARCHAR2不会像CHAR一样填充,在数据库中只有10具字节。

LONG型:此数据类型用来存储可变长度的字符数据,最多能存储2GB。

但是有一些限制:一个表中只有一列可以为LONG型,LONG列不能定义为主键或唯一约束,不能建立索引,过程或存储过程不能接受LONG数据类型的参数。

2、数值数据类型只有NUMBER型,但是NUMBER功能不小,它可以存储正数,负数,零,定点数和精度为30位的浮点数。

格式为(P=38,S=0),其中P为精度,表示数字的总位数,它在1-38之间,S为范围,表示小数点右边的数字的位数,它在-84至127之间。

3、日期时间数据类型:有DATE数据类型,TIMESTAMP数据类型。

DATE用于存储表中的日期和时间数据,ORACLE使用自己的格式存储日期,使用7个字节固定长度,每个字节分别存储世纪,年月日,小时,分和秒。

日期数据类型的值从公元前4712年1月1日到公元9999年12月31日。

ORACLE中的SYSDATE函数用于返回当前的日期和时间。

TIMESTAMP数据类型与DATE不同的是:它还返回当前的时区。

4RAW和LONG RAW 数据类型
此种数据类型主要用于存储二进制数据。

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

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

5、LOB数据类型
LOB又称为“大对象”数据类型:主要有CLOB,BLOB,BFILE,三种子类型。

CLOB代表(CHARACTER LOB),它能够存储大量字符数据,可以存储非结构化的XML 文档。

BLOG代表(BINARY LOB),它可以存储较大的二进制对象;如图形,音视频剪辑。

BFILE 代表(BINARY FILE),它能够将二进制文件存储在数据库外部的操作系统文件中,注意是二进制文件,不是一般数据,BFILE列存储一个BFILE定位器,它指向位于服务器文件系统上的二进制文件,支持的文件最大为4GB。

不过ORACLE10以上的会更大,这还需要硬件方面的支持。

相关主题