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一样
1183 0
|
4月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
290 64
|
2月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
131 11
|
3月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
3月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
3月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
68 7
|
2月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
3月前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
43 6

推荐镜像

更多