oracle数据库三种文件类型 oracle 文件类型



文章插图
oracle数据库三种文件类型 oracle 文件类型

文章插图
面对激烈的国际竞争和不确定不稳定因素明显上升的外部环境,加快推进国内信息技术产业发展,构建安全、自主的信息技术应用创新体系迫在眉睫 。作为国内XC产业数据库领域的领军企业,南大通用推出的OLTP型数据库产品——GBase 8s,已在金融、电信、电力、交通、政府、军工等多个行业用户完成测试,验证了8s的稳定性和性能 。GBase 8s是如何兼容Oracle的,让我们从数据类型说起 。
1.字符
Oracle中包含6种字符类型:CHAR、NCHAR、VARCHAR、VARCHAR2、NVARCHAR2、LONG 。具体如下:
1)CHAR
CHAR类型,定长字符串,会用空格填充来达到其最大长度 。CHAR字段最多可以存储2,000字节的信息 。
2)VARCHAR
VARCHAR是标准SQL的写法,可变长字符串,可以存储空字符串 。
3)VARCHAR2
变长字符串,与CHAR类型不同,是oracle特有的字段,它不会使用空格填充至最大长度 。VARCHAR2最多可以存储4,000字节的信息 。
4)NCHAR
包含UNICODE格式数据的定长字符串 。NCHAR字段最多可以存储2,000字节的信息 。它的最大长度取决于国家字符集 。
5)NVARCHAR2
包含UNICODE格式数据的变长字符串 。NVARCHAR2最多可以存储4,000字节的信息 。
6)LONG
存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节,而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换 。ORACLE建议开发中使用CLOB替代LONG类型 。支持LONG 列只是为了保证向后兼容性 。CLOB类型比LONG类型的限制要少得多 。
GBase 8s除了LONG和VARCHAR2类型外,对Oracle字符类型全部可以兼容,LONG类型可用CLOB替代,而VARCHAR2建议用VARCHAR替代,NVARCHAR2建议用NVARCHAR替代 。此外GBase 8s还支持LVARCHAR类型,变长字符串,默认为2048字节,最大支持32739字节 。
GBase 8s中验证如下:
2.数字
Oracle包含5种数字类型:INT、NUMBER、FLOAT、BINARY_FLOAT、BINARY_DOUBLE 。具体如下:
1)NUMBER
NUMBER(P,S)是最常见的数字类型,需要1~22字节(BYTE)不等的存储空间 。
P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字;S是Scale的英文缩写,可以使用的范围为-84~127 。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数 。
2)INT / INTEGER
INT是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数 。若插入、更新的数值有小数,则会被四舍五入 。
3)FLOAT
一个ANSI数据类型,也是NUMBER的子类型 。精度为126位二进制、38位十进制的浮点数 。
4)BINARY_FLOAT
BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型,采用二进制精度 。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节 。
5)BINARY_DOUBLE
BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型,采用二进制精度 。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节 。
GBase 8s除了BINARY_FLOAT和BINARY_DOUBLE类型外需要用DOUBLE PRECISION替代外,对Oracle数值类型全部可以兼容,需要注意的是,GBase 8s中的NUMBER类型以名为NUMERIC的类型出现,区别在于精度不超过32个有效数字,小数点后位数不大于精度位数,此外,GBase 8s还提供MONEY货币值类型,支持用货币字符进行格式化 。
GBase 8s中验证如下:
3.时间&日期
Oracle包含4种时间及日期类型:DATE、TIMESTAMP、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND 。具体如下:
1)DATE
DATE是最常用的数据类型,日期数据类型存储日期和时间信息 。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性 。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒 。一般占用7个字节的存储空间 。
2)TIMESTAMP
这是一个7字节或12字节的定宽日期/时间数据类型 。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位 。
3)INTERVAL YEAR TO MOTH
用来存储单位为年和月的时间间隔 。
4)INTERVAL DAY TO SECOND
用来存储单位为天和秒的时间间隔 。
GBase 8s对Oracle日期类型全部可以兼容,但要说明的是,Oracle中的date对应GBase 8s中的datetime year to second,GBase 8s中的date默认仅支持年月日,不支持时分秒,而Oracle中timestamp(p)则对应GBase 8s中的datetime year to fraction(min(5,p)),最多保留小数点后5位 。
GBase 8s中验证如下:
4.大对象
Oracle包含4种大对象类型BLOB、CLOB、NCLOB、BFILE,存储长度都为4G 。具体如下:
1)CLOB
内部字符大对象,存储单字节和多字节字符数据 。支持固定宽度和可变宽度的字符集,常用于大文本的存储 。
2)NCLOB
国家语言字符集大对象,存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集 。
3)BLOB
内部二进制大对象,存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件 。
4)BFILE
外部二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理 。
GBase 8s对Oracle的CLOB和BLOB类型可以兼容,且最大支持4T,但对NCLOB和BFILE类型暂未支持,建议可用CLOB和BLOB替代 。此外GBase 8s还另外支持BYTE和TEXT类型,最大均为2G 。
GBase 8s中验证如下:
5.其他类型
除以上常用类型外,Oracle还包含RAW、LONG RAW、ROWID及UROWID类型 。具体如下:
1)RAW
用于存储二进制或字符类型数据,变长二进制数据类型,这说明采用这种数据类型存储的数据不会发生字符集转换 。这种类型最多可以存储2000字节的信息,建议使用 BLOB 来代替它 。
【oracle数据库三种文件类型 oracle 文件类型】2)LONG RAW
能存储2GB 的原始二进制数据(不用进行字符集转换的数据) 。建议使用BLOB来代替它 。
3)ROWID
ROWID是一种特殊的列类型,称之为伪列(pseudocolumn) 。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问 。ROWID表示行的地址,ROWID伪列用ROWID数据类型定义 。Oracle数据库中每行都有一个伪列 。
4)UROWID
UROWID,它用于表,是行主键的一个表示,基于主键生成 。UROWID与ROWID的区别就是UROWID可以表示各种ROWID,使用较安全 。一般是索引组织表在使用UROWID 。
GBase 8s默认支持ROWID伪列,RAW和LONG RAW类型可用BLOB类型替代 。
GBase 8s中验证如下:
总结一下,GBase 8s可全面兼容Oracle常见数据类型,对于少数非常用数据类型,需要进行少量代码改造,或进行相应类型替换 。