Oracle数据类型

1.     字符类型

数据类型

长度

说明

CHAR(n BYTE/CHAR)

默认1字节,n值最大为2000

末尾填充空格以达到指定长度,超过最大长度报错。默认指定长度为字节数,字符长度可以从1字节到四字节。

NCHAR(n)

默认1字符,最大存储内容2000字节

末尾填充空格以达到指定长度,n为Unicode字符数。默认为1字节。

NVARCHAR2(n)

最大长度必须指定,最大存储内容4000字节

变长类型。n为Unicode字符数

VARCHAR2(n BYTE/CHAR)

最大长度必须指定,至少为1字节或者1字符,n值最大为4000

变长类型。超过最大长度报错。默认存储的是长度为0的字符串。

VARCHAR

同VARCHAR2

不建议使用

 

2.     数字类型

数据类型

长度

说明

NUMBER(p,s)



---------------------------



int



----------------------------

decimal

1-22字节。

P取值范围1到38

S取值范围-84到127

---------------------------------------------

只能存储整数,不指定长度

取值范围

[-2147483648,2147483647]



---------------------------------------------

Oracle只是在语法上支持decimal类型,但是在底层实际上它就是number类型,支持decimal类型是为了能把数据从Oracle数据库移到其他数据库中(如DB2等)。

存储定点数,值的绝对值范围为1.0 x 10 -130至1.0 x 10 126。值大于等于1.0 x 10 126时报错。p为有意义的10进制位数,正值s为小数位数,负值s表示四舍五入到小数点左部多少位。p(precision)为精度,s(scale)小数点位数

--------------------------------------------------------------------------

int 与number区别:oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。

number可以存储浮点数,也可以存储整数;
number(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全

--------------------------------------------------------------------------

因为decimal在Oracle底层就是number类型,所以就当number类型使用就可以了,如果需要对这种字段类型转为char类型可以用to_char函数对其转换。

BINARY_FLOAT

5字节,其中有一长度字节。

32位单精度浮点数类型。

符号位1位,指数位8位,尾数位23位。

BINARY_DOUBLE

9字节,其中有一长度字节。

64位双精度浮点数类型。

3.     时间、时间间隔类型

时间字段可取值范围:

时间字段

时间类型有效值

时间间隔类型有效值

YEAR

-4712至9999,包括0

任何整数

MONTH

01至12

0至11

DAY

01至31

任何整数

HOUR

00 至 23

0 至 23

MINUTE

00 至 59

0至 59

SECOND

00 to 59.9(n),9(n)不适用与DATE类型

0 to 59.9(n)

TIMEZONE_HOUR

-1至14,不适用与DATE和TIMESTAMP类型

不可用

TIMEZONE_MINUTE

00至59,不适用与DATE和TIMESTAMP类型

不可用

TIMEZONE_REGION

 

不可用

TIMEZONE_ABBR

 

不可用

 

时间、时间间隔类型:

数据类型

长度

说明

DATE

7字节

默认值为SYSDATE的年、月,日为01。包含一个时间字段,若插入值没有时间字段,则默认值为:00:00:00 or 12:00:00 for 24-hour and 12-hour clock time。没有分秒和时间区。

TIMESTAMP [(fractional_seconds_precision)]

7至11字节

fractional_seconds_precision为Oracle存储秒值小数部分位数,默认为6,可选值为0到9。没有时间区。

TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

13字节

使用UTC,包含字段YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_

HOUR, TIMEZONE_MINUTE

TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE

7至11字节

存时使用数据库时区,取时使用回话的时区。

INTERVAL YEAR [(year_precision)] TO MONTH

5字节

包含年、月的时间间隔类型。year_precision是年字段的数字位数,默认为2,可取0至9。

INTERVAL DAY [(day_precision)]

TO SECOND [(fractional_seconds_precision)]

11字节

day_precision是月份字段的数字位数,默认为2,可取0至9。

  1. TO_DATE()、DATE使用的时间字段值都是午夜值。或者使用TRUNC()函数进行过滤,确保时间字段为午夜值。
  2. 时间和时间间隔类型操作规则:

在DATE和TIMESTAMP(会被转化为DATE类型值)类型上加、减NUMBER类型常量,该常量单位为天数。

所有TIMESTAMP类型运算都以UTC时间为准。即对于TIMESTAMP WITH LOCAL TIME ZONE来说,先转化为UTC时间,计算完成后再转化回来。

  1. INTERVAL YEAR TO MONTH常量:

INTERVAL‘year-month’YEAR/MONTH(precision) TO MONTH

year位数超过precision时,返回一个错误。

其中precision为最大的位数,默认为2,可取0到9。

例子:INTERVAL '123-2' YEAR(3) TO MONTH 、

INTERVAL '123' YEAR(3) 、

INTERVAL '300' MONTH(3)。

  1. INTERVAL DAY TO SECOND常量:

INTERVAL ‘n/time_expr/n time_expr’ DAY/HOUR/MINUTE(leading_precision)  TO  HOUR/MINUTE/SECOND(fractional_second_precision)

INTERVAL ‘n/time_expr’ SECOND(leading_precision, fractional_second_precision) 

time_expr格式:HH[:MI[:SS[.n]]] or MI[:SS[.n]] or SS[.n] 若n大于分秒精度,则四舍五入n。

只有当第一个字段是DAY时,才可以使用n time_expr。

leading_precision默认为2,可取0至9。

4.     大对象类型

数据类型

长度

说明

BLOB

最大为(4GB-1)*数据库块大小

存储非结构化二进制文件。支持事务处理。

CLOB

最大为(4GB-1)*数据库块大小

存储单字节或者多字节字符数据。支持事务处理。

NCLOB

最大为(4GB-1)*数据库块大小

存储Unicode数据。支持事务处理。

BFILE

最大为2 32-1字节

LOB地址指向文件系统上的一个二进制文件,维护目录和文件名。不参与事务处理。只支持只读操作。

 

  1. LOB列包含一个LOB地址,指向数据库内或者数据库外的LOB类型值。

5.     其他类型

数据类型

长度

说明

LONG

最大为2GB

变长类型,存储字符串。创建表时不要使用该类型。

RAW(n)

最大2000字节,n为字节数,必须指定n

变长类型,字符集发生变化时不会改变值。

LONG RAW

最大为2GB

变长类型,不建议使用,建议转化为BLOB类型,字符集发生变化时不会改变值。

ROWID

10字节

代表记录的地址。显示为18位的字符串。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。

UROWID(n)

 

 

  1. ROWID:数据对象编号32位(6个字符)、文件编号10位(3个字符)、块编号22位(6个字符)、行编号16位(3个字符)
  2. 使用dqms_rowid包获得ROWID信息:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kiki·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值