常用的数据类型有:
一.数值类型
number:
    在Oracle中取消了在mysql中的int类型,使用number代替,如果你在创建
数据库表的时候使用了int类型会自动转换成number类型,并且Oracle没有
这个”auto_increment”属性,所以它没法像MySQL般在表内定义自增主键。
但是,Oracle里的序列(SEQUENCE),可间接实现自增主键的作用;
number有两个参数:
number(m,n):m用来表示有几位有效数字最大是38位,n表示小数点以后可以
有几位,多出来的位数要四舍五入。

二:字符类型
char:
    用于存储固定长度的字符串,一个空间占用1个字节,最多存储2000个字节,
并且在存数据的时候,给的数据占不满给定的空间也会自动用空格补满空间,如果长
度超出了就会报错;

varchar2:
    是Oracle特有的数据类型,Oracle中不提倡使用varchar; varchar2用于存储
变长度的字符串。最大长度是char的两倍,也就是4000个字节,在存数据的时候,
给的数据占不满给定的空间会自动截断,省空间,如果长度超出了会补长,不会报
错;并且它将原本varchar可以存储空字符串的特性转换成了可以存储null值,提供
了向后兼容的能力;

但是为什么不直接全部使用varchar2呢?
    1.VARCHAR2虽然比CHAR节省空间,但是假如一个VARCHAR2列经常被修改,而且每次
被修改的数据的长度不同,这会引起‘行迁移’(RowMigration)现象,而这会造成多
余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会
更好一些;
    2.还有就是当我们存储已知固定长度的数据时,比如:手机号(11位)、身
份证号码(18位)等,可以考虑使用 char。因为,在查询数据时,对于 char 类型
字段,是全字符整体匹配;而 varchar2 是一个字符一个字符的进行匹配;
    3.并且char的效率要比varchar2高一些,为了提高效率就必须牺牲一些空间。

nchar:
    用于存储固定长度的字符串,一个空间占用2个字节,最多存储2000个字节,并且
在nchar中存储字符,数字和文字都是占用两个字节;

nvarchar2:
    用于存储可变长度的字符串,一个空间占用2个字节,最大长度是 NCHAR 的两倍,
也就是4000个字节。


三:日期类型
Oracle日期类型主要使用 date 和 timestamp 数据类型。

date:
   用于存储日期和时间类型,date 类型的默认格式为:DD-MM-YYYY。

timestamp:
   时间戳类型,与 date相比较,timestamp类型具有小数位毫秒数,比 DATE 的精
度更高。


四:大数据类型与二进制类型

long:
 用于存储可变长度的超长字符串,最大长度为2G,通常用于存储备注字段,或者 
varchar2 和 nvarchar2 不够存储时。

lob:
lob又分为三个:
clob :是一种字符型大型对象(Character Large Object),最大长度为4G,
存储与字符集相关。

nclob:根据字符集而定的字符数据,最大长度为4G。

blog:是一种二进制大型对象(Binary Large Object),最大长度为4G,适用于
存储非文本的字节流数据,如:视频、音频等。

raw:固定长度的二进制数据,最大长度 2000个字节,可存储多媒体视频、音频格式等。

long raw:可变长度的二进制数据,最大长度2G,与 RAW 类似。

bfile:存储在数据库之外的二进制数据,最大长度4G。

rowid:
    行地址,十六进制串,表示行在所在的表中唯一的行地址,该数据类型主要用于返回
ROWID伪列,常用在可以将表中的每一条记录都加以唯一标识的场合。数据表中记录的
唯一行号,占10个字节。

nrowid:
    二进制数据表中记录的唯一行号,最大长度4000个字节。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐