oracle数据类型
有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据类型集解,相信读者阅读了本文以后,Oracle数据库开发起来会事半功倍!
在Oracle数据库中,每个关系表都由许多列组成。给每一列指派特定的数据类型来定义将在这个列中存储得数据类型。
1、CHAR
最多可以以固定长度的格式存储2000个字符或字节。默认指定为以字符形式进行存储,这个数据类型是固定长度的,并且当位数不够时,需要在其右边添加空格来补满。
例如:
CREATE TABLE test
(name char(20))
2、VARCHAR和VARCHAR2
最多可以以可变长度来存储4000B,因此不需要空格来作补充。VARCHAR2 比 VARCHAR 更适合使用,由于兼容性的原因,所以仍然在 Oracle 数据库中保留着 VARCHAR 。
例如:
CREATE TABLE test
(name varchar2(20))
3、NCHAR
NLS(national language support , 国际语言支持)的数据类型仅可以存储由数据库 NLS 字符集定义的 Unicode 字符集。该数据类型最多可以存储2000B。NCHAR 的列在位数不够时需要在右边填充空格。例如:
CREATE TABLE test
(name Nchar(20))
注意:在 Oracle9i 数据库及其更新的版本中,仅使用 Unicode 数据类型
4、NVARCHAR2
NLS 的数据类型与 VARCHAR2 数据类型等价。这个数据类型最多可存储4000B 。例如:
CREATE TABLE test
(name Nvarchar2(20))
注意:在 Oracle9i 数据库及其更新的版本中,仅使用 Unicode 数据类型
5、NUMBER
用于存储零、正数、定长负数以及浮点数。NUMBER 数据类型可以以 NUMBER(P,S)的
形式来定义数字的精度和范围。 这里:p 表示精度 (1-38),它表示存储在列中数
字的总长度是 p 位: s 表示范围,它表示小数点后的位数。该取值范围可以从-84 到 127 。例如:
CREATE TABLE test
(name number(5))
使用精度 5 来定义一个正数(如 12345)。
CREATE TABLE test
(name number(5,2))
使用精度 5 和范围 2 来定义一个数字。符合这种数据类型的数字值如 123.45 和 12.34
6、LONG
LONG 类型的列存储可变长度的字符串,最多可以存储 2GB 的数据。LONG 类型的列有很多在 VARCHAR2 类型列中所具有的特征。可以使用 LONG 类型的列来存储 LONG 类型的文本字符串。LONG 数据类型的使用是为了向前兼容的需要。建议使用 LOB 数据类型来代替 LONG 类型。例如:
CREATE TABLE test
(name long)
7、DATE
用于在数据库中存储日期和时间。存储时间的精度可以达到 1/100s。不提供时区的相关信息。例如:
CREATE TABLE test
(name DATE)
8、TIMESTAMP
使用年、月、日、小时、分钟、秒域来对日期/时间提供更详细的支持。最多可以使用 9 位数字的精度来存储秒(受底层操作系统支持的限制)。这个数据类型没有时区的相关信息,它可以在 Oracle9i 数据库及其更新的版本中使用。例如:
CREATE TABLE test
(timestamp_column TIMESTAMP);
9、TIMESTAMP WITH TIME ZONE
包含 TIMESTAMP 数据类型中的所有域,除此之外,还包含两个额外的域:timezone_hour 和 timezone_minute。这个数据类型包含支持时区的相关信息。这个数据
类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
CREATE TABLE test
(timestamp_column
TIMESTAMP WITH
TIME ZONE);
10、TIMESTAMP WITH LOCAL TIME ZONE
除了在数据库中存储的时区采用标准化以外,所包含的其他域与 TIMESTAMP 数据类型中的域相同。当选择列时,将日期/时间标准为会话的时区。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如
CREATE TABLE test
(timestamp_column
TIMESTAMP WITH
LOCAL TIME ZONE);
11、INTERVAL YEAR TO MONTH
用于存储一个时间段,由月份和年组成。需要 5B 来存储。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
SELECT INTERVAL
'01-05'
YEAR TO MONTH -
INTERVAL '01-02' YEAR
TO MONTH FROM dual;
12、INTERVAL DAY TO SECOND
用于存储一个时间段,由日和秒组成。需要 11B 来存储。这个数据类型可以在 Oracle9i 数据库及其更新的版本中使用。例如:
SELECT INTERVAL
'100 10:20:42.22'
DAY(3) TO SECOND(2) -
INTERVAL
'101 10:20:42.22'
DAY(3) TO SECOND(2)
FROM dual;
13、RAW
用于存储 raw 类型的二进制数据。最多可以存储 2000B。建议使用 BLOB 来代替它。例如:
CREATE TABLE test
(raw_column
RAW(2000));
14、LONG RAW
用于存储 raw 类型的二进制数据。最多可以存储 2GB 的数据。建议使用BLOB来代替它。例如:
CREATE TABLE test
(raw_column LONG RAW);
15、ROWID
表中 ROWID 类型的字符串表示。使用这个数据类型来存储由 ROWID 类型伪列的返回值。例如:
CREATE TABLE test
(rowid_column ROWID);
16、UROWID
在索引组织表中表示逻辑行地址。例如:
CREATE TABLE test
(urowid_column UROWID);
17、CLOB
用于存储基于字符的大对象。在 Oracle9i 数据库中最多可以存储 4GB 的数据,这比 Oracl
e10g 数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据块大小)。例如:
CREATE TABLE test
(clob_column CLOB);
18、NCLOB
可以使用由数据库国际字符集所定义的字符集来存储仅为 Unicode 类型的基于字符的数据。最多可以存储 4GB 的数据,这比 Oracle10g 数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据块大小)。例如:
CREATE TABLE test
(nclob_column NCLOB);
19、BLOB
最多可以存储 4GB 数据的二进制大对象,这比 Oracle10g数据库中可存储的最大数据还要大,这也是现在数据库规定块大小的一个因素(~4GB* 数据库块大小)。例如:
oracle四舍五入
CREATE TABLE test
(blob_column BLOB);
20、BFILE
存储指向数据库外部文件的定位符。外部文件最大为 4GB。例如:
CREATE TABLE test
(bfile_column BFILE);
21、BINARY_FLOAT
该数据类型是一个基于 ANSI_IEEE745 标准的浮点数据类型。它定义了一个 32 位的双精度浮点数。这个数据类型需要 5B 的存储空间。例如:
CREATE TABLE test
(b_float BINARY_FLOAT);
22、BINARY_DOUBLE
该数据类型是一个基于 ANSI_IEEE745 标准的双精度浮点数据类型,它定义了一个32位的双精度浮点数。这个数据类型需要 9B 节的存储空间。例如:
CREATE TABLE test
(b_float BINARY_DOUBLE);
关于各种数据类型的注释
1、关于 CHAR 和 VARCHAR2 数据类型的注释
由数据库字符集来确定特定的 CHAR、VARCHAR 或者 VARCHAR2 字符类型所占的字节
数。多字节字符集中的字符可以存储 1~4B。CHAR 或 VARCHAR2 数据类型的大小由该数据类型可以存储的字节数或字符数来决定(这成为字符的语义)。所有定义的存储大小都是默认以字节为单位的。如果使用多字节字符集(大部分常见的西方字符集都是以单字节为单位的,而值得注意的是,有一个例外就是 UTF 字符集不是以单字节为单位的),则可能需要定义以字符为单位的存储,下面的例子说明了这个问题:
CREATE TABLE test
(name VARCHAR2(20 char));
建议在表的末尾处创建一些值为 NULL 的列。通过使用这种方法,可以用 VARCHAR2 数据类型来存储一些数据,但不能使用 CHAR 数据类型来存储数据,因为 Oracle 数据库是以在一行中连续存储多个 NULL 值的方式来进行存储的。
Oracle9i 数据库及其更新的版本提供数据压缩功能,该功能仅在包含于只读表空间中的表中使用(也就是说,表中的数据将不会改变)。仅当通过下面的批量装载(bulk-load)操
作中的任意一种操作将数据装载进表中时,才会执行数据压缩操作
使用 create table as select(CTAS)操作来创建表。
在直接模式下的 insert 操作或者并行的 insert 操作。

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