oracle数据类型详解

来源:互联网 发布:项目数据分析师官网 编辑:程序博客网 时间:2024/05/17 02:10

1.varchar2,char,nvarchar,nchar:

     varchar2表示方法一般为[长度]值,char也是[长度]值类型的存储,只是如果char定义的长度是固定,不足长度则在后面补空格,但由于varchar2和char存储时均是"[长度]值"因此varchar完全可以代替char,即是varchar(1)也完全可以代替char(1). 其中varchar最多可以表示4000字节的大小,char最多可以表示2000字节的大小.

     nchar表示是的国家字符编码的格式的字符,表示的最大包围由国家字符编码定义的最大值决定.nvarhcar2最大的长度为4000字节.

2.number,binary_float,binary_double:(10g新增的数据类型)

      number最大精度可以表示至38位,number是一种变长的数据类型,范围是0-22个字节

      binary_float是5个字节,4位存储值,1存储长度,最大精度是6位.

      binary_double是9个字节,8位存储值,1位存储长度,最大精度13位.

      由于binary_double和binary_float的精度不如number,所以金融方案里应该先用number.但binary可以表示比number更小或更大的值.

3.blob,clob,bfile:

   blob是一个4G大小的二进制存储列,clob是字符格式的4G大小的存储列,10g之后可以存储的大小为4G*10.bfile是指向操作系统的一个类型

4.raw

  是一个二进制串的数据类型,最大支持4000个字节,主要操作raw的函数有sys_guid()得到一个全局唯一的二进制串,dump将raw转化为某个进制的值,hextoraw将十六制转为raw,如果使用超出十六进制的表示字符则报错,rawtohex将raw串转换为十六进制.

5.date,timestamp,timestamp with zone

   date 表示:世纪、年、月、日、时、分、秒.7字节的定宽

   timestamp 比date多一个小数位的秒,小数点后面最多可以有9位;7或11字节的定宽数据类型

   timestamp with zone 带时区的时间类型.13个字节.

  timestamp with local time zone: 该类型的数据类型会将其它时区的类型转为本地时区来存储,如你定义的timestamp是美国时区,当前数据库是北京时区,则存储该值时,会先转为北京时区再存储.但需要注意的是该类型会转为timestamp类型再存储,所以它的表示范围是7-11个字节,而不是像timestamp with zone一样的13个字节.

 6.rowid

   表示是表中记录的唯一行id,是由oracle内部使用的确定唯一行的标志,但rowid是会变化的,主要变化的情况包括:

      (1)分区表中的主键被修改后转入到了另一个区;

      (2)Flashback table将数据库闪回至以前的某个时间点;

      (3)执行move操作来分解或合并分区;

     (4)alter table shrink space 收缩段.