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一样
1274 0
|
7月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
637 93
|
6月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
346 0
|
9月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
7月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
503 8
|
9月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
445 11
|
9月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
9月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
262 0

热门文章

最新文章

下一篇
开通oss服务