Oracle中的数据类型有:字符型、数值型、日期/时间型、大对象(LOB)型和ROWID型。
1)字符型
数据类型 | 说明 |
CHAR(n) | 固定长度字符串,n表示存储字符数量,长度<=2000字节 |
VARCHAR2(n) | 可变长字符串,n表示存储字符数量,长度<=4000字节 |
NCHAR(n) | 根据字符集而定的固定长度字符串,n表示存储字符数量,长度<=2000字节 |
NVACHAR2(n) | 根据字符集而定的可变长字符串,n表示存储字符数量,长度<=4000字节 |
LONG | 可变长度字符串,长度<=2GB |
RAW | 可变长度二进制字符串,长度<=2000字节 |
LONG RAW | 可变长度二进制字符串,长度<=2GB |
2)数值型
数据类型 | 说明 |
NUMBER(p,s) | 数值类型,p表示精度,s表示小数位数 |
FLOAT | 浮点数类型,相当于NUMBER(38),双精度 |
DECIMAL(p,s) | 数值类型,p表示精度,s表示小数位数 |
INTEGER | 整数类型 |
SMALLINT | 短整数类型 |
REAL | 实数类型,相当于NUMBER(63),精度更高 |
注:NUMBER类型:P是精度,表示有效数字的位数,最多不能超过38个有效数字。S是小数位数,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数。指定了P值,没有指定S,那么S默认是0。最大的有效数字是最左边的非零数字,而最小有效位是最右边的数字。Oracle保证数字的可移植性精度高达20 base-100 digits,相当于39位或40位十进制数字,取决于小数点的位置。如果P和S都省略了,S的值是变化的,小数点前的数字位数和小数点后的数字位数相加为40(有时候又是39)。小数点和负号不计入有效位数。
数值型的数据类型在底层实现上,都是用NUMBER来保存。
3)日期/时间型
数据类型 | 说明 |
DATE | 日期类型,精确到秒 |
TIMESTAMP(n) | 日期类型,精确到微秒,n(0~9)表示微秒的精确范围,默认是6 |
INTERVAL YEAR(n) TO MONTH | 按年、月存储一个时间段,n表示年份的位数,默认是2 |
INTERVAL DAY(n) TO SECOND(m) | 按日、时、分、秒存储一个时间段,n表示天的位数,默认是2;m(0~9)表示微秒精确范围,默认是6 |
4)大对象(LOB)型
数据类型 | 说明 |
BFILE | 存放在数据库外的二进制数据,指向服务器文件系统上的文件定位器,长度<=4GB |
BLOB | 二进制数据,长度<=4GB |
CLOB | 字符数据,长度<=4GB |
NCLOB | 根据字符集而定的字符数据,长度<=4GB |
5)ROWID类型
数据类型 | 说明 |
ROWID | 数据表中记录的唯一行号 |
UROWID | 通用的ROWID,既可以保存物理的ROWID,也可以保存逻辑的ROWID |