Oracle基本数据类型
Oracle在创建表时,每一列都会分配一种数据类型,这决定了该列值的特性。 从总的数据类型种类上大致可以分为字符型数据、数字型数据、时间型数据、大对象数据类型、Row和RowId数据类型。下面列举常用的数据类型。
字符型数据
VARCHAR2:可变长度的字符数据,使用数据库字符集存储;通常设置该字符类型时会指定相应的长度,例如varchar2(100),这里需要注意的是后面的100表示100字节,即100byte,这在保存数字或者英文时没有什么区别,但是保存汉字时,如果数据库字符集是GBK,那么该列可以保存100/2=50个汉字,如果是UTF-8,该列可以保存100/3=33个汉字。数据库字符集是数据库创建时设置的,通常不能更改。
NVARCHAR2:这个和VARCHAR2一样,区别在于该类型使用国家语言字符集存贮;国家语言字符集可以认为是为oracle选择的附加字符集,这通常是为了增强Oracle字符处理能力;通常使用这种字符集存储的数据类型使用频率不高。
CHAR:和VARCHAR2的区别在于是定长类型,同样保存在数据库字符集中,如果保存的数据长度没有达到设定的长度,则会使用空格填充。
数字型数据
NUMBER:数字数据,可以指定它的精度和小数位数;通常格式NUMBER ( precision, scale) ,precision表示精度(1-38),指的有效数字的位数,scale表示小数位数(-84-127)。
FLOAT:一个ANSI数据类型,精度为126位二进制、38位十进制的浮点数。另外Oracle还提供BINARY_FLOAT和BINARY_DOUBLE作为备选。
INTEGER:存储整型数据,小数位数为0,相当于NUMBER(P,0)。
日期型数据
DATE:存储日期类型,可以精确到秒,通常存储格式是年月日时分秒;常用。
TIMESTAMP:和DATE相比,这个可以精确到纳秒,存储时间精度更高;常用。
TIMESTAMP WITH TIMEZONE:和TIMESTAMP一样,只不过可以在设置时候指定时区。
INTERVAL YEAR TO MONTH:记录两个DATE或TIMESTAMP之间的以年和月的时间间隔。
INTERVAL DAY TO SECOND:记录两个DATE或TIMESTAMP之间的以天和秒的时间间隔。
大对象数据类型
CLOB:保存在数据库字符集中的字符数据,大小没有限制;
NCLOB:作用和CLOB一样,但是保存在国家语言字符集中;
RAW和ROWID数据类型
RAW:可变长度的二进制数据;
ROWID:指向表中行的位置的指针,他里面是物理地址,是Oracle专有数据类型。