Oracle基础(六) 数据类型

时间:2022-06-20 07:11:11

一、Oracle中的数据类型

  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

不建议使用

  char、nchar、varchar类型的区别

  1、char CHAR的长度是固定的,最长2000个字符,长度根据声明来决定;varchar是可变长度的字符串,长度根据保存的值来决定。

  2、varchar是最大长度为2000的可变字符串,而varchar2最大长度为4000。 

  2、数字类型: 存储整数、小数格式的数据 

数据类型

长度

说明

NUMBER(p[,s])

1-22字节。

P取值范围1到38

S取值范围-84到127

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

BINARY_FLOAT

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

32位单精度浮点数类型。

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

BINARY_DOUBLE

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

64位双精度浮点数类型。

  3、日期时间类型:存储日期格式类型,包括日期和时间间隔

数据类型

长度

说明

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。

  4、大对象类型:存储大数据对象,比如音频,视频等格式。

数据类型

长度

说明

BLOB

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

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

CLOB

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

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

NCLOB

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

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

BFILE

最大为2 32-1字节

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

  5、其他类型:

数据类型

长度

说明

LONG

最大为2GB

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

RAW(n)

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

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

LONG RAW

最大为2GB

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

ROWID

10字节

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