Oracle数据库类型总结

RACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。
一 字符串类型
CHAR类型 CHAR(size [BYTE | CHAR])

CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR).一般来说默认是存储字节,你可以查看数据库参数

1.2: NCHAR类型

这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。另外查询时,如果字段是NCHAR类型,则需要如下书写

SELECT translated_description FROM product_descriptions

WHERE translated_name = N‘LCD Monitor 11/PM‘;

1.3 VARCHAR类型

不要使用VARCHAR数据类型。使用VARCHAR2数据类型。虽然VARCHAR数据类型目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一个单独的数据类型用于可变长度的字符串相比,具有不同的比较语义。

1.4: VARCHAR2类型

变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

1.5: NVARCHAR2类型

这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。

二. 数字类型

2.1 NUMBER类型

NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间。

P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字

S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数

下面是官方文档的示例

2.2 INTEGER类型

INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入

2.3 浮点数

浮点数可以有一个十进制数点任何地方从第一个到最后一个数字,或者可以在所有有没有小数点。指数可能(可选) 用于以下数量增加的范围 (例如, 1.777e-20)。刻度值不适用于浮点数字,因为可以显示在小数点后的位数的数量不受限制。BINARY_FLOAT

BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。

BINARY_DOUBLE

BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。

在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。

您可以指定列在表 2-4 范围内的浮点数。"数字文本"中定义了用于指定浮点数的格式。
2.5 FLOAT类型

FLOAT类型也是NUMBER的子类型。

Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 0.30103。要从十进制转换为二进制的精度,请用 3.32193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。

三. 日期类型

日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。

3.1 DATE类型

DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。

3.2 TIMESTAMP类型

这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位

3.3 TIMESTAMP WITH TIME ZONE类型

这是TIMESTAMP类型的变种,它包含了时区偏移量的值

3.4 TIMESTAMP WITH LOCAL TIME ZONE类型

3.5 INTERVAL YEAR TO MOTH

3.6 INTERVAL DAY TO SECOND

四. LOB类型

内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型

4.1 CLOB 数据类型

它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符

4.2 NCLOB 数据类型

它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。

4.3 BLOB 数据类型

它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。

4.4 BFILE 数据类型

二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理

五. RAW & LONG RAW类型

5.1 LONG类型

它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:

1.一个表中只有一列可以为LONG型。(Why?有些不明白)

2.LONG列不能定义为主键或唯一约束,

3.不能建立索引

4.LONG数据不能指定正则表达式。

5.函数或存储过程不能接受LONG数据类型的参数。

6.LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)

六. ROWID & UROWID类型

在数据库中的每一行都有一个地址。然而,一些表行的地址不是物理或永久的,或者不是ORACLE数据库生成的。

例如,索引组织表行地址存储在索引的叶子,可以移动。

例如,外部表的ROWID(如通过网关访问DB2表)不是??标准的ORACLE的rowid。

ORACLE使用通用的ROWID(UROWIDs)的存储地址的索引组织表和外表。索引组织表有逻辑urowids的,和国外表的外urowids,。UROWID这两种类型的存储在ROWID伪(堆组织的表的物理行id)。

创建基于逻辑的rowid在表中的主键。逻辑的rowid不会改变,只要主键不改变。索引组织表的ROWID伪UROWID数据类型。你可以访问这个伪列,你会堆组织表的ROWID伪(即使用一个SELECT ...ROWID语句)。如果你想存储的rowid索引组织表,那么你就可以定义一列的表型UROWID到列检索值的ROWID伪。

时间: 2024-10-08 15:26:23

Oracle数据库类型总结的相关文章

Oracle数据库类型

字符类型char[(length)] 定长字符 最长2000字节varchar2[(length)] 可变长度的字符数据类型,最长4000字节NCHAR[(length)] 固定长度的字符数据类型,由国际字符语言(national language Support,NLS)字符集字符组成,最长2000字节LONG 可变长度的字符数据类型 最长2GBRAW 原始的二进制数据类型,最长2000字节long raw 原始的二进制数据类型,最长2GBrawid 数据库中一窜12字节地址,用于定位磁盘上某

Thinkphp ORACLE 数据库配置写法

return array( 'DB_TYPE' => 'oracle', // 数据库类型 'DB_HOST' => 'server2008', // 服务器地址 'DB_NAME' => '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=server2008)(PORT=1521))(CONNECT_DATA=(SID=MYSID)))', // 服务器地址 'DB_USER' => 'username', // 用户名 'DB_PWD' =&

Oracle数据库以date类型保存日期时,Java中用哪个类对应数据库的date类型?

1. 使用JDBC操作Oracle数据库时,使用java.sql.Date类型对应数据库的date类型,此时只能保存和读取日期部分, 时间(时分秒)部分不能读取和保存:  查询结果集可以直接获取Date类型的数据:java.sql.Date date=resultSet.getDate("dateTime"): java.sql.Date类型的数据也可以直接保存到数据库或者与数据库中date类型的数据直接比较大小: 字符串的日期,则用SQL语句的转换函数 to_date('2017-4

Oracle数据库中的blob类型解析

Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢? 这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor用select查询出来,这样通过两步操作

采用struts2+hibernate实现保存文件到Oracle数据库&&并附下载代码【导入即可用】;数据库中保存blob类型的二进制文件

原文:采用struts2+hibernate实现保存文件到Oracle数据库&&并附下载代码[导入即可用]:数据库中保存blob类型的二进制文件 源代码下载地址:http://www.zuidaima.com/share/1550463402478592.htm

制作一个SSRS的ORACLE数据库报表,使用了时间类型的参数。

需求:我们这个报表是以月为单位,呈现的数据为查询为当前月的第一天到最后一天.条件类似于:time_day > 20140601 and  time_day < 20140630 因为是让用户选择月,所有呈现出来的时间参数应该是201406这种,写了一个时间的SQL,这个是连接ORACLE数据库的,并且只生成从201301到当前月的数据. ? 1 2 3 4 5 6 7 8 select * from (SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2013-01', '

oracle数据库的date和timestamp类型

1.date类型存储数据的格式为年月日时分秒,可以精确到秒 timestamp类型存储数据的格式为年月日时分秒,可以精确到纳秒(9位) 2.date类型 Date类型的数据可以显示到年月日,也可以显示到年月日时分秒,主要看存储数据的精确度 注:这里的显示是指从plsql可视化工具中看到的数据显示 1)存储年月日只显示年月日 2)没有存时分秒,或者时分秒位00:00:00,也都只显示年月日 3)注意:还有一种报错的情况 4)存储年月日时分秒才会显示年月日时分秒 注意:date类型存储到数据库的格式

Oracle数据库date类型与Java中Date的联系与转化

以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助.new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当前.new Date(long date) : 分配 Date 对象并初始化此对象,以表示自从标准基准时间    (称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数.long getTime() :返回自 1970 年 1 月 1 日 00:00

oracle数据库数值类型

---恢复内容开始--- 内容摘自网络 Oracle的数值类型有int,number,float,decimal,numberic等. NUMBER类型 定义 定义格式NUMBER (precision,scale) precision表示数字中的有效位(从左边第一个不为0的数算起,小数点和负号不计入有效位数),取值范围为[1-38]默认38. scale表示精确到多少位,取值范围为[-84-127],默认值为0.大于零时,表示数字精确到小数点右边的位数:小于零时,将把该数字取舍到小数点左边的指