Oracle中的基础数据类型

一,字符型

CHAR - 定长字符类型,单位可以使用字节数或字符数。例如:

CHAR(2 BYTE) -- 长度为2个字节
CHAR(2 CHAR) -- 长度为2个字符,具体占几个字节还要看编码。比如存储双字节的汉字,则实际长度是4个字节。
CHAR(2) -- 不指定则表示长度为2个字节

VARCHAR/VARCHAR2
varchar和varchar2在Oracle里是同义词,但是Oracle建议使用VARCHAR2。变长字符类型,和char类似,其单位可以使用字节数或字符数。

VARCHAR2(25 BYTE) -- 最大可存储字符长度为25字节
VARCHAR2(25 CHAR) -- 最大可存储字符长度为25字符,具体长度看编码
VARCHAR2(25) -- 不指定则表示最大长度为25个字节。

NCHAR/NVARCHAR2 - 保存定长的unicode字符,注意其单位默认是字符数。因此如果存储的是UTF-16,则NVARCHAR(100)实际的最大存储长度是400个字节。

ROWID - 每个Oracle都有一个名为rowid的伪列,用来存放每一行数据的存储地址的二进制值,由18个字符组合表示。

二,数字类型
注意数据库中的数字类型和ISO标准略有不同。

NUMBER
NUMBER是Oracle中的数字类型,可以用来存储浮点数或整数:
NUMBER(精度,刻度)
精度 – 表示所允许的值的总长度,也就是数值中所有数字位的个数。最大精度是38,也就是说最多存储38个数字。如果不指定精度,则默认为38。
刻度 – 小数点右边的数字位的个数。
例如:

NUMBER(4,3) -- 可用于存储3.142这样的数值,如果赋值超出了变量的精度,则自动四舍五入。例如将3.1415926赋值给NUMBER(4,3) ,则存储的是3.142
NUMBER(3) -- 可用于存储3这样的整数,相当于NUMBER(3,0)

而我们常见的int,smallint,decimal,float等类型,其实是number的子类型,用于和ANSI兼容。包括decimal,int,smallint,float等等,这里介绍float和decimal。

FLOAT

float(n) – float是浮点数(floating-point number)类型,因此它不是精确值,不能精确表达所有小数。在Oracle中n表达的是二进制的精度,范围最大到126,等同于十进制的38。
real等同于float(63),而double precision等同于float(126)。

DECIMAL和NUMERIC

Decimal和numeric是同义词,它们是定点数(fixed-point numbers)类型,因此可以表达精确值。
decimal(精度,刻度) – 精度和刻度的意义和上文number类型相同。

decimal可以和整数直接运算,但是不能和float直接运算。因为decimal是精确的,而float是不精确的。

三,时间类型

与MSSQL以及MySQl不同,Oracle存储时间不是从1900年开始到现在的整数。

Date

用于存储日期和时间信息,包含世纪,年,月,日,小时,分钟和秒,但是不包含秒的小数部分,也就是不能表达毫秒微秒。

2011-08-01 06:08:05
select SYSDATE-2 from DUAL; -- 返回两天前同一时间。该类型与整数的加减运算,实际上是对天数的加减。

用TO_DATE()和TO_CHAR()做Date和字符串之间的类型转换。

TIMESTAMP

Timestamp与date相同,只是包含的时间信息是年,月,日,小时,分钟,秒以及秒的小数部分。因此需要存储精确到毫秒微秒的时间信息时,需要使用timestamp,默认精确到微秒。

2011-08-01 06:08:05.000

四,布尔型
BOOLEAN
可能的值为true,false和null。很简单,不详述了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值