【数据库技术】ORACLE基本数据类型总结。
ORACLE基本数据类型:字符串、数字、日期、LOB、LONG RAW& RAW、ROWID & UROWID。
字符串类型的数据又可分为:
据库字符集(CHAR/VARCHAR2/CLOB/LONG)
国际字符集(NCHAR/NVARCHAR2/NCLOB)
字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。
一 字符串类型
固定长度类型(CHAR/NCHAR)、可变长度类型(VARCHAR2/NVARCHAR2)
固定长度:
输入的字段值小于该字段的限制长度,实际存储数据时,会先自动向右补足空格,再将字段值的内容存储到数据块中。这种方式虽然比较浪费空间,但是存储效率较可变长度类型要好。同时还能减少数据行迁移情况发生。
1.1:CHAR类型 CHAR(size [BYTE | CHAR])
CHAR字段最多可以存储2,000字节的信息。不指定CHAR长度,则默认为1。
默认是存储字节,可以查看数据库参数NLS_LENGTH_SEMANTICS的值。
1.2 VARCHAR类型
虽然目前VARCHAR是VARCHAR2的同义词,但是推荐使用VARCHAR2,而不推荐使用VARCHAR。
1.4: VARCHAR2类型
VARCHAR2最多可以存储4,000字节的信息。
二. 数字类型
2.1 NUMBER类型
NUMBER(P,S):
P,表示有效数字的位数,最多不能超过38;
S,表示从小数点到最低有效数字的位数,范围为-84~127。它为负数时,表示从最大有效数字到小数点的位数
2.2 INTEGER类型
INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。
2.3 浮点数
BINARY_FLOAT
BINARY_FLOAT 可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。
BINARY_DOUBLE
每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。
2.4 FLOAT类型
Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。
三. 日期类型
3.1 DATE类型
DATE是最常用的数据类型,日期数据类型存储日期和时间信息。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。
3.2 TIMESTAMP类型
这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位
3.3 TIMESTAMP WITH TIME ZONE类型
这是TIMESTAMP类型的变种,它包含了时区偏移量的值
3.4 TIMESTAMP WITH LOCAL TIME ZONE类型
3.5 INTERVAL YEAR TO MOTH
3.6 INTERVAL DAY TO SECOND
四. LOB类型
内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型
4.1 CLOB 数据类型
它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符。
4.2 BLOB 数据类型
它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。
4.3 BFILE 数据类型
二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理。
五. RAW & LONG RAW类型
5.1 LONG类型
ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。
5.2 LONG RAW 类型
能存储2GB 的原始二进制数据(不用进行字符集转换的数据)。
5.3 RAW类型
类似于CHAR,声明方式RAW(L),L为长度,以字节为单位。