Oracle数据库之数据类型
Oracle数据库之数据类型
Oracle基本数据类型(亦叫内置数据类型,internal datatypes或built-in datatypes)可以按类型分为:字符串类型、数字类型、⽇期类型、LOB类型、LONG RAW&RAW类型、ROWID&UROWID类型。
下⾯介绍常⽤的Oracle数据类型:
⼀、字符串类型
字符串数据类型可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种。
固定长度:是指虽然输⼊的字段值⼩于该字段的限制长度,但是实际存储数据时,会先⾃动向右补⾜空格后,才将字段值的内容存储到数据块中。
可变长度:是指当输⼊的字段值⼩于该字段的限制长度时,直接将字段值的内容存储到数据块中,⽽不会补上空⽩,这样可以节省数据块空间。
1. CHAR
定长字符串,会⽤空格填充来达到其最⼤长度。⾮NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE)、CHAR(12 CHAR)。⼀般来说默认是存储字节。
2. NCHAR
⼀个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2000字节的信息,它的最⼤长度取决于国家字符集。
3. VARCHAR2
变长字符串,与CHAR类型不同,它不会使⽤空格填充⾄最⼤长度。VARCHAR2最多可以存储4000字节的信息。
oracle四舍五入4. NVARCHAR2
⼀个包含UNICODE格式数据的变长字符串,NVARCHAR2最多可以存储4000字节的信息。
⼆、数字类型
1. NUMBER
NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间。
P 是Precison的英⽂缩写,即精度缩写,表⽰有效数字的位数,最多不能超过38个有效数字。
S是Scale的英⽂缩写,可以使⽤的范围为-84~127。Scale为正数时,表⽰从⼩数点到最低有效数字的位数,它为负数时,表⽰从最⼤有效数字到⼩数点的位数。
2. INTEGER
INTEGER是NUMBER的⼦类型,它等同于NUMBER(38,0),⽤来存储整数。若插⼊、更新的数值有⼩数,则会被四舍五⼊。
3. FLOAT
FLOAT类型也是NUMBER的⼦类型。
Float(n),数n指⽰位的精度,可以存储的值的数⽬。n值的范围可以从 1 到 126。若要从⼆进制转换为⼗进制的精度,请将n乘以 0.30103。要从⼗进制转换为⼆进制的精度,请⽤3.32193乘⼩数精度。126位⼆进制精度的最⼤值是⼤约相当于38位⼩数精度。
三、⽇期类型
1. DATE
DATE是最常⽤的数据类型,⽇期数据类型存储⽇期和时间信息。虽然可以⽤字符或数字类型表⽰⽇期和时间信息,但是⽇期数据类型具有特殊关联的属性。为每个⽇期值,Oracle 存储以下信息:世纪、年、⽉、⽇期、⼩时、分钟和秒。⼀般占⽤7个字节的存储空间。
2. TIMESTAMP
TIMESTAMP是⼀个7字节或12字节的定宽⽇期/时间数据类型,是DATE类型的扩展类型。它与DATE数据类型不同,因为TIMESTAMP可以包含⼩数秒,带⼩数秒的TIMESTAMP在⼩数点右边最多可以保留9位
四、LOB类型
内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的⼤型化和⾮结构化数据,如⽂本、图像、视频、空间数据存储。
1. CLOB
CLOB存储单字节和多字节字符数据。⽀持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size)⼤⼩的字符
2. NCLOB
NCLOB存储UNICODE类型的数据,⽀持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)⼤⼩的⽂本数据。
3. BLOB
BLOB存储⾮结构化的⼆进制数据⼤对象,它可以被认为是没有字符集语义的⽐特流,⼀般是图像、声⾳、视频等⽂件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的⼆进制数据。
4. BFILE 数据类型
⼆进制⽂件,存储在数据库外的系统⽂件,只读的,数据库会将该⽂件当⼆进制⽂件处理。
五、RAW & LONG RAW
1. RAW
⽤于存储⼆进制或字符类型数据,变长⼆进制数据类型,这说明采⽤这种数据类型存储的数据不会发⽣字符集转换。这种类型最多可以存储2000字节的信息,建议使⽤ BLOB 来代替它
2. LONG RAW
LONG RAW类型,能存储2GB的原始⼆进制数据(不⽤进⾏字符集转换的数据)。建议使⽤BLOB来代替它。
六、ROWID & UROWID类型
1. ROWID
ROWID是⼀种特殊的列类型,称之为伪列(pseudocolumn)。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问。ROWID表⽰⾏的地址,ROWID伪列⽤ROWID数据类型定义。Oracle数据库中每⾏都有⼀个伪列。
ROWID与磁盘驱动的特定位置有关,因此,ROWID是获得⾏的最快⽅法。但是,⾏的ROWID会随着卸载和重载数据库⽽发⽣变化,因此建议不要在事务中使⽤ROWID伪列的值。例如,⼀旦当前应⽤已经使⽤完记录,就没有理由保存⾏的ROWID。不能通过任何SQL语句来设置标准的ROWID伪列的值。
列或变量可以定义成ROWID数据类型,但是Oracle不能保证该列或变量的值是⼀个有效的ROWID。
2. UROWID
UROWID,它⽤于表,是⾏主键的⼀个表⽰,基于主键⽣成。UROWID与ROWID的区别就是UROWID可以表⽰各种ROWID,使⽤较安全。⼀般是索引组织表在使⽤UROWID。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论