Oracle中常用的数据类型

简介: 整理自《OCP认证指南》 001     当建表时,每一列都分配一种数据类型,它决定了可以插入该列的值的特性。这些数据类型也用来指定PL/SQL过程和函数的参数的特性。
整理自《OCP认证指南
001
    当建表时,每一列都分配一种数据类型,它决定了可以插入该列的值的特性。这些数据类型也用来指定PL/SQL过程和函数的参数的特性。在选择数据类型时,必须考虑要保存的数据和要在它上面执行的操作空间也是需要考虑的事项:有些数据类型是固定长度的,不管其中是什么数据,都占用相同的字节数;有些数据类型的长度则是可变的。如果没有填充列,那么Oracle根本不会给它提供任何空间。如果后面更新行来填充列,那么行会变得更大,而不管数据类型是固定长度还是可变长度。

002    
下面的数据类型适合于字母数字数据:
    varchar2 可变长度的字符数据,从1B到4KB。数据保存在数据库字符集中。
    nvarchar2 和varchar2一样,但数据保存在国家语言字符集(它是许可的unicode字符集之一)中。
    char 固定长度的字符数据,从1B到2KB,它保存在数据库字符集中。如果数据不够列的长度,就会用空格进行填充。
    注意:为了符合ISO/ANSI,可以指定varchar数据类型,但这种类型的所有列都会自动转换为varchar2。

003 
    下面的数据类型适合于数字数据,它们都是可变长度的:
    number 数字数据,可以指定它的精度和小数位数。精度范围是1-38,小数位数范围是从-84到127.
    float 这是一个ANSI数据类型,精度为126位二进制、38位十进制的浮点数。Oracle还提供binary_float和binary_double作为备选。
    integer 相当于number,小数位数为0.

004 下面的数据类型适用于日期和时间数据,它们都是固定长度的:
    date 它的长度为0(如果列为空)或者7个字节。所有date数据都包含世纪、年、月、日、时、分和秒。其有效范围为公元前4712年1月1日至公元9999年12月31日。
    timestamp 如果列为空,那么它的长度为0,或者达到11字节(这取决于指定的精度)。与date类似,但对秒而言,其精度最多为9位,默认为6位。
    timestamp with timezone 和timestamp一样,但在保存数据时可以指定时区。根据精度,长度可能达到13个字节。该数据类型让Oracle通过将两个时区规范化为UTC来确定它们之间的差,即使这两个时间在不同的时区。
    timestamp with local timezone 和timestamp一样,但数据在保存时被规范化为数据库时区。当检索时,将其规范化为选择它的用户进程所在的时区。
    interval year to month 用于记录两个date或timestamp之间以年和月为单位的时间间隔。
    interval day to second 用于记录两个date或timestamp之间以天和秒为单位的时间间隔。

005 下面是大对象数据类型:
    CLOB 保存在数据库字符集中的字符数据,大小没有限制:4GB乘以数据库块的大小。
    NCLOB 和CLOB一样,但数据保存在可选的国家语言字符集(它是许可的unicode字符集之一)中。
    BLOB 和CLOB一样,但二进制数据不会被Oracle Net执行字符集转换。
    BFILE 定位器,它指向保存在数据库服务器的操作系统上的文件。文件的大小限制为4GB。
    LONG 数据库字符集中的字符数据,大小可达到2GB。LONG的所有功能(甚至更多)都由CLOB提供,不能在现代数据库中使用LONG,如果数据库有这种类型的列,应该将它们转换为CLOB。在表中只能有一个LONG列。
    LONG RAW 和LONG一样,但Oracle Net不会转换二进制数据。所有LONG RAW列都应该转换为BLOB。

006 下面是RAW和ROWID数据类型:
    RAW 可变长度的二进制数据,从1B到4KB。和char和varchar2数据类型不同,在select时,Oracle Net不会将RAW数据从数据库的字符集转换为用户进程的字符集,或者在insert时进行反向转换。
    ROWID 以64为基数编码的值,它是一个指向表中行的位置的指针。它里面是物理地址。ROWID是Oracle专有的数据类型,除非特别选择,否则不可见。

007 补充
    varchar2数据类型必须用一个数来限定,这个数表示列的最大长度。如果插入列的值小于这个值,那么没有问题:这个值只占用必要的空间。如果这个值比最大值还要长,那么insert会出现错误。如果将值更新为更长或更短的值,那么列的长度(和行本身)也会相应改变。如果没有输入,或者更新为Null,那么它根本不会占用空间。
    可以使用精度和小数位来限定number数据类型。精度设置数中的最大位数,小数位数表示小数点右边有多少位。如果小数位数是负数,那么会用0取代插入的数的最后几位,它不占用精度指定的位数。如果位数超过精度,那么会出现错误;如果它在精度之内但在小数位之外,那么数字会舍入为最小数位内最接近的值。
    date数据类型总是包括世纪、年、月、日、时、分、秒——即使在插入时没有指定所有这些元素。必须指定年、月、日。如果省略时、分、秒,那么它们默认为午夜。

相关文章
|
Oracle 关系型数据库
Oracle 数据类型定义
Oracle数据类型 定义 CHAR <=2000 DATE Jan 1, 4712 B.C.到 Dec 31, 4712 A.D. DECIMAL 同 Number一样 FLOAT 同 Number一样 INTEGER 同 Number一样
1156 0
|
3天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之采集oracle的时候报ORA-65040:不允许从可插入数据库内部执行该操作如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
20 3
|
6天前
|
SQL Oracle 安全
Oracle11g更改数据库名(详细教程)
Oracle11g更改数据库名(详细教程)
15 1
|
6天前
|
DataWorks Oracle 关系型数据库
DataWorks操作报错合集之尝试从Oracle数据库同步数据到TDSQL的PG版本,并遇到了与RAW字段相关的语法错误,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
35 0
|
3天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之可以通过配置Oracle数据库的schema注册表来监测表结构的变化吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
12 1
|
6天前
|
Oracle 关系型数据库 数据库
Oracle数据库协议适配器错误解决方法
Oracle数据库协议适配器错误解决方法
12 2
|
6天前
|
存储 Oracle 关系型数据库
实验三 Oracle数据库的创建和管理
实验三 Oracle数据库的创建和管理
15 1
|
6天前
|
SQL Oracle 关系型数据库
实验一 安装和使用Oracle数据库
实验一 安装和使用Oracle数据库
16 1