Oracle数据库字段类型说明
⽬录
1.数据类型总览
类型含义存储描述备注
CHAR固定长度字符串最⼤长度2000bytes
VARCHAR2可变长度的字符串最⼤长度4000bytes可做索引的最⼤长度749
NCHAR根据字符集⽽定的固定长度字符串最⼤长度2000bytes
NVARCHAR2根据字符集⽽定的可变长度字符串最⼤长度4000bytes
DATE⽇期(⽇-⽉-年)DD-MM-YY(HH-MI-SS)
TIMESTAMP⽇期(⽇-⽉-年)DD-MM-YY(HH-MI-SS:FF3)与DATE相⽐较,TIMESTAMP有⼩数位秒信息LONG超长字符串最⼤长度2G,⾜够存储⼤部头著作
RAW固定长度的⼆进制数据最⼤长度2000bytes可存放多媒体图象声⾳等
LONG RAW可变长度的⼆进制数据最⼤长度2G可存放多媒体图象声⾳等
BLOB⼆进制数据最⼤长度4G
CLOB字符数据最⼤长度4G
NCLOB根据字符集⽽定的字符数据最⼤长度4G
BFILE存放在数据库外的⼆进制数据最⼤长度4G
ROWID数据表中记录的唯⼀⾏号10bytes
NROWID⼆进制数据表中记录的唯⼀⾏号最⼤长度4000bytes
NUMBER(P,S)数字类型P为整数位,S为⼩数位
DECIMAL(P,S)数字类型P为整数位,S为⼩数位
INTEGER整数类型⼩的整数
FLOAT浮点数类型NUMBER(38),双精度
REAL实数类型NUMBER(63),精度更⾼
⽬前Oracle 数据库⼤概有26个字段类型,⼤体分为六类
1. 字符串类型
2. 数字数据类型
3. ⽇期时间数据类型
4. ⼤型对象(LOB)数据类型
5. RAW和LONG RAW数据类型
6. ROWID和UROWID数据类型
2.字符串类型
Char
char数据类型存储固定长度的字符值。⼀个CHAR数据类型可以包括1到2000个字符。如果对CHAR没有明确地说明长度,
它的默认长度则设置为1。 如果对某个CHAR类型变量赋值,其长度⼩于规定的长度,那么Oracle⾃动⽤空格填充。
注意:如果给了⼀个⽐固定长度更长的值,其尾部带有空格,则空格会被删除到固定的长度。如果值太⼤Oracle会返回⼀个错误
Varchar
⽤于保存变长的字符串数据。其中最⼤字节长度由(size)指定。每⾏长度可变,最⼤长度为每⾏4000字节。
设置长度(size)前需考虑字符集为单字节或多字节。
注意:varchar是被废弃的类型,oracle⽬前都推荐使⽤varchar2。虽然varchar也可以⽤,但不确保未来的版本是否还⽀持
Varchar2
⽤于保存变长的字符串数据。其中最⼤字节长度由(size)指定。每⾏长度可变,最⼤长度为每⾏4000字节。
设置长度(size)前需考虑字符集为单字节或多字节。由于VARCHAR2数据类型只存储为该列所赋的字符(不加空格),所以VARCHAR2需要的存储空间⽐CHAR数据类型要⼩。
区别:varchar2把所有字符都占两字节处理(⼀般情况下),varchar只对汉字和全⾓等字符占两字节,数字,英⽂字符等都是⼀个字节; VARCHAR2把空串等同于null处理,⽽varchar仍按照空串处理;⼤部分情况下建议使⽤varchar2类型,可以保证更好的兼容性。
Nchar
Unicode数据类型,根据字符集⽽定的固定长度字符串,最⼤长度2000bytes。
oracle decimal类型
Nvarchar2
Unicode数据类型,根据字符集⽽定的可变长度字符串,最⼤长度4000bytes。
Long
可变长字符列,最⼤长度限制为2GB,⽤于不需要作字符串搜索的长串数据。
说明:此类型是⼀个遗留下来的⽽且将来不会被⽀持的数据类型,逐渐被BLOB,CLOB,NCLOB等⼤的数据类型所取代。
3.数字类型
Number
NUMBER数据类型精度可以⾼达38位,它有两个限定符,如:column NUMBER(precision,scale)。precision表⽰数字中的有效位。
如果没有指定precision的话,Oracle将使⽤38 作为精度。scale表⽰⼩数点右边的位数,scale默认设置为0。
如果把scale设成负数,Oracle将把该数字取舍到⼩数点左边的指定位数。
Decimal
Oracle只是在语法上⽀持decimal类型,但是在底层实际上它就是number类型,⽀持decimal类型是为了能把数据从Oracle数据库移到其他数据库中。
Float
FLOAT类型也是NUMBER的⼦类型。其格式Float(n),数 n 指⽰位的精度,可以存储的值的数⽬。N 值的范围可以从 1 到 126。
若要从⼆进制转换为⼗进制的精度,请将n 乘以 0.30103。要从⼗进制转换为⼆进制的精度,请⽤ 3.32193 乘⼩数精度。
126 位⼆进制精度的最⼤值是⼤约相当于 38 位⼩数精度。
BINARY_FLOAT
BINARY_FLOAT 是⼀种 32 位,单精度浮点数字数据类型。每个 BINARY_FLOAT 值需要5 字节存储空间,其中 1 字节⽤于存储数据值的长度。⽀持 NUMBER 数据类型所提供的基本功能。但采⽤⼆进制精度,⽽NUMBER 采⽤⼗进制精度。因此能够提供更快的数学运算速度,且能减少占⽤的存储空间。
BINARY_DOUBLE
BINARY_DOUBLE 是⼀种 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 值需要9 字节存储空间,
其中 1 字节⽤于存储数据值的长度。⽀持 NUMBER 数据类型所提供的基本功能。但采⽤⼆进制精度,⽽NUMBER 采⽤⼗进制精度。
因此能够提供更快的数学运算速度,且能减少占⽤的存储空间。
4.⽇期数据类型
Date
ORACLE最常⽤的⽇期类型,它可以保存⽇期和时间,常⽤⽇期处理都可以采⽤这种类型。
DATE表⽰的⽇期范围可以是公元前4712年1⽉1⽇⾄公元9999年12⽉31⽇。
date类型在数据库中的存储固定为7个字节, 第1字节:世纪+100、 第2字节:年、第3字节:⽉、第4字节:天、
第5字节:⼩时+1、第6字节:分+1、第7字节:秒+1。
Timestamp
ORACLE常⽤的⽇期类型,它与date的区别是不仅可以保存⽇期和时间,还能保存⼩数秒,⼩数位数可以指定为0-9,默认为6位,所以最⾼精度 可以到ns(纳秒),数据库内部⽤7或者11个字节存储,如果精度为0,则⽤7字节存储,与date类型功能相同,如果精度⼤于0则⽤11字节存储。第1字节:世纪+100、第2字节:年、第3字节:⽉、第4字节:天、 第5字节:⼩时+1、第6字节:分+1、第7字节:秒
+1、 第8-11字节:纳秒,采⽤4个字节存储,内部运算类型为整形
注:TIMESTAMP⽇期类型如果与数值进⾏加减运算会⾃动转换为DATE型,也就是说⼩数秒会⾃动去除。
TIMESTAMP WITH TIME ZONE
对TIMESTAMP进⾏了扩展,⽤于存储时区。时间戳以及时区位移值,其中fractional_seconds_precision是数字在第⼆⽇期时间字段的⼩数部分数字的所有值。可接受的值是0到9。默认是6。默认格式是确定明确的NLS_DATE_FORMAT参数或隐式的NLS_TERRITORY参数。 ⼤⼩固定为13字节。此数据类型包含⽇期时间字段YEAR,MONTH,⽇,⼩时,分钟,秒TIMEZONE_HOUR和
TIMEZONE_MINUTE。
它有⼀个明确的分数秒和时区。
TIMESTAMP WITH LOCAL TIME ZONE
所有的TIMESTAMP WITH TIME ZONE值,但下列情况除外:数据标准化数据库的时区时,存储在数
据库中。当数据被检索, ⽤户可以看到在会话时区中的数据。默认格式是确定明确的NLS_DATE_FORMAT参数或隐式的NLS_TERRITORY参数。
的⼤⼩不同的7⾄11个字节,取决于精度。
INTERVAL YEAR TO MONTH
存储期间年数和⽉的时间,其中year_precision是数字的年份⽇期时间字段的数量。可接受的值是0到9。默认是2。⼤⼩固定为5个字节。
INTERVAL DAY TO SECOND
其格式为:INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds)],是存储⼀段时间以天,⼩时,分钟和秒,
其中day_precision是数字在DAY⽇期时间字段的最⼤数量。可接受的值是0到9。默认是2。fractional_seconds_precision是数字中的第⼆个字段的⼩数部分的数量。可接受的值是0到9。默认是6。⼤⼩固定为11个字节。
INTERVAL YEAR TO MONTH
Oracle语法:INTERVAL YEAR [(year_precision )] TO MONTH,⽤来表⽰⼀段时间差, 只精确到年和⽉. year_precision是数字年的时间段,接受的值为0到9。默认值是2。⼤⼩固定为5个字节。
5.⼤型对象(LOB)数据类型
Clob
最⼤4G,存储单字节字符型数据。适⽤于存储超长⽂本。
Nclob
最⼤4G,存储多字节国家字符型数据。适⽤于存储超长⽂本。
Blob
最⼤4G,存储⼆进制数据。适⽤于存储图像、视频、⾳频等。
BFile
最⼤长度是4GB,在数据库外部保存的⼤型⼆进制对象⽂件,最⼤长度是4GB。这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进⾏的。 Oracle 可以读取、查询
BFILE,但是不能写⼊,不参与事务。
6.RAW和LONG RAW数据类型
RAW
raw(n)格式,其中n=1 to 2000,可变长⼆进制数据,在具体定义字段的时候必须指明最⼤长度n,Oracle ⽤这种格式来保存较⼩的图形⽂件或带格式的⽂本⽂件,如Miceosoft Word⽂档。raw是⼀种较⽼的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等⼤的对象数据类型所取代。
LONG RAW
最⼤长度是2GB。可变长⼆进制数据,最⼤长度是2GB。Oracle ⽤这种格式来保存较⼤的图形⽂件或带格式的⽂本⽂件,
如Miceosoft Word⽂档,以及⾳频、视频等⾮⽂本⽂件。在同⼀张表中不能同时有long类型和long raw类型,
long raw也是⼀种较⽼的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等⼤的对象数据类型所取代。
7.ROWID和UROWID数据类型
Rowid
ROWID为该表⾏的唯⼀标识,是⼀个伪列,可以⽤在SELECT中,但不可以⽤INSERT, UPDATE来修改该值。
ROWID列,Oracle使⽤ROWID列来建⽴内部索引。你可以引⽤ROWID的值,但ROWID并不存放在数据库中,你可以创建⼀个表包含ROWID数据类型。但Oracle不保证该值是合法的rowids。⽤户必须确保该rowid值是真实合法的。
Urowid
UROWID⽀持逻辑和物理的rowids,列UROWID类型可以存储各种rowids, 从8.1以后的Oracle才有UROWID类型,
它也可以⽤来保存以前的ROWID类型数据信息。
8.特殊数据类型
Xmltype
XMLType是Oracle从9i开始特有的数据类型,是⼀个继承了Blob的强⼤存在,可以⽤来存储xml并提供了相当多的操作函数,
⽤来直接读取xml⽂档和管理节点。理论上可以保存2G⼤⼩的数据。作为XML数据的特殊存储类型。
Xmltype提供了适合的保存、检索和操作的⽀持。
Xmlindex
XMLType是Oracle从9i开始特有的数据类型,是⼀个继承了Blob的强⼤存在,可以⽤来存储xml并提供了相当多的操作函数,
⽤来直接读取xml⽂档和管理节点。理论上可以保存2G⼤⼩的数据。作为XML数据的特殊存储类型。
Xmltype提供了适合的保存、检索和操作的⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。