一、Oracle数据类型
1.字符数据类型
CHAR
固定长度的字符串,可以存储字母数字值。长度可以是1到2000个字节。如果在定义时未指定大小,则默认占用一个字节。
如果用户输入的值小于指定的长度,数据库则用空格填充至固定长度。
VARCHAR2
用于存储可变长度的字符串或字母数字值。长度可以是1到4000个字节。定义该数据类型时,应指定大小。
与CHAR相比,使用VARCHAR2更节省磁盘空间,例如有列为VARCHAR2数据类型定义时的长度为30字节,如果用户只输入10个字节的字符,则该行中的列长度将只有10个字符。如果是CHAR类型,它将占用30个字节。
LONG
用于存储可变长度字符数据,最多能存储2GB。LONG类型用来存储VARCHAR2不能存储的长文本信息。其长度受于计算机上可用空间的限制。使用LONG类型时需遵循以下限制:
一个表中只有一列可以为LONG类型
LONG不能定义为唯一约束或主键约束
LONG列不能建立索引
过程或存储过程不能接受LONG数据类型的参数
2.数值数据类型
NUMBER
用于存储正数、负数、零、定点数或精度为38位的浮点数。该数据类型的格式为NUMBER(p,s)
p为精度,表示数字的总位数,它在1至38之间。s为范围,表示小数点右边数字的位数,它在-84至127之间。
3.日期时间数据类型
DATE
用于存储表中的日期和时间数据。Oracle用自己的格式存储日期,使用7个固定长度的字节分别存储世纪、年、月、日、小时、分和秒。日期取值的范围从公元前4712年1月1日到9999年12月31日。(SYSDATE函数返回当前的日期和时间)
TIMESTAMP
用于存储日期的年、月、日以及时间的小时、分和秒值。其中秒值精确到小数点后6位,该数据类型同时包含时区信息。(SYSTIMESTAMP函数返回当前日期、时间和时区)
RAW和LONG RAW数据类型
RAW
用于存储基于字节的数据,如二进制数据或字节串,长度可以是1到2000个字节,使用该数据类型时就指定大小。RAW可以建立索引。
LONG RAW
用于存储可变长度的二进制数据或字节串,最多能存储2GB。该数据类型不可建立索引。
LOB
可存储4GB的非结构化信息,如声音和视频的剪辑。它们允许对数据进行高效、随机、分段的访问。LOB可以是外部的也可以是内部的,这取决于它们相对于数据库的位置。修改LOB类型的数据可以使用SQL数据操纵语言来完成,也可以通过PL/SQL中提供的程序包DBMS_LOB来完成。一个表中可以有多列为LOB数据类型。
CLOB(CHARACTER LOB)
字符LOB,可以存储单字节字符和多字节字符数据还可存储非结构化的XML文档。
BLOB(Binary LOB)
二进制LOB,可存储较大的二进制对象,如图形、视频、声音剪辑。
BFILE(Binary File)
二进制文件,能够将二进制文件存储在数据库外部的操作系统文件中。BFILE列存储一个BFILE定位器指向位于服务器文件系统上的二进制文件。支持的文件最大为4GB。