当前位置:  数据库>oracle

ORACLE数据库常用字段数据类型介绍

 
    发布时间:2013-9-16  


    本文导语: 常用的数据库字段类型如下:  字段类型 中文说明 限制条件 其它说明  CHAR 固定长度字符串 最大长度2000 bytes  VARCHAR2 可变长度的字符串 最大长度4000 bytes 可做索引的最大长度749  NCHAR 根据字符集而定的...

常用数据库字段类型如下:

  字段类型  中文说明 限制条件  其它说明

  CHAR 固定长度字符串 最大长度2000 bytes

  VARCHAR2 可变长度的字符串 最大长度4000 bytes  可做索引的最大长度749

  NCHAR 根据字符集而定的固定长度字符串 最大长度2000 bytes

  NVARCHAR2 根据字符集而定的可变长度字符串 最大长度4000 bytes

  DATE 日期(日-月-年) DD-MM-YY(HH-MI-SS) 经过严格测试,无千虫问题

  LONG 超长字符串 最大长度2G(231-1) 足够存储大部头着作

  RAW 固定长度的二进制数据 最大长度2000 bytes  可存放多媒体图象声音

  LONG RAW 可变长度的二进制数据 最大长度2G 同上

  BLOB 二进制数据 最大长度4G

  CLOB 字符数据 最大长度4G

  NCLOB 根据字符集而定的字符数据 最大长度4G

  BFILE 存放在数据库外的二进制数据 最大长度4G

  ROWID 数据表中记录的唯一行号 10 bytes ********.****.****格式,*为0或1

  NROWID 二进制数据表中记录的唯一行号 最大长度4000 bytes

  NUMBER(P,S) 数字类型 P为整数位,S为小数位

  DECIMAL(P,S) 数字类型 P为整数位,S为小数位

  INTEGER 整数类型 小的整数

  FLOAT 浮点数类型 NUMBER(38),双精度

  REAL 实数类型 NUMBER(63),精度更高

分类介绍:

Oracle支持的数据类型可以分为三个基本种类:字符数据类型、数字数据类型以及表示其它数据的数据类型。

   字符数据类型

   CHAR数据类型存储固定长度的子符值。一个CHAR数据类型可以包括1到2000个字符。如果对CHAR没有明确地说明长度,它的默认长度则设置为1.如果对某个CHAR类型变量赋值,其长度小于规定的长度,那么Oracle自动用空格填充。

   VARCHAR2存储可变长度的字符串。虽然也必须指定一个VARCHAR2数据变量的长度,但是这个长度是指对该变量赋值的的最大长度而非实际赋值长度。不需要用空格填充。最多可设置为4000个字符。

   因为VARCHAR2数据类型只存储为该列所赋的字符(不加空格),所以VARCHAR2需要的存储空间比CHAR数据类型要小。

   Oracle推荐使用VARCHAR2

   NCHAR和NVARCHAR2 NCHAR和NVARCHAR2数据类型分别存储固定长度与可变长度的字符数据,但是它们使用的是和数据库其他类型不同的字符集。在创建数据库时,需要指 定所使用的字符集,以便对数据库中数据进行编码。还可以指定一个辅助的字符集[即本地语言集(National Language Set,简称NLS)]。NCHAR和NVARCHAR2类型的列使用辅助字符集。

   在Oracle9i中,可以以字符而不是字节为单位来表示NCHAR和NVARCHAR2列的长度。

   LONG LONG数据类型可以存放2GB的字符数据,它是从早期版本继承来的。现在如果想存储大容量的数据,Oracle推荐使用CLOB和NCLOB数据类型。在表和SQL语句中使用LONG类型有许多限制。

   CLOB和NCLOB CLOB和NCLOB数据类型可以存储多达4GB的字符数据。NCLOB数据类型可存储NLS数据。

  数字数据类型

   Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。

   NUMBER数据类型可以有两个限定符,如:

   column NUMBER ( precisionscale

   precision表示数字中的有效位。如果没有指定precision的话,Oracle将使用38作为精度。

   scale表示数字小数点右边的位数,scale默认设置为0.  如果把scale设成负数,Oracle将把该数字取舍到小数点左边的指定位数。

   日期数据类型

   Oracle标准日期格式为:DD-MON-YY  HH:MI:SS

   通过修改实例参数NLS_DATE_FORMAT,可以改变实例中插入日期的格式。在一个会话期间,可以通过ALTER SESSION SQL命令来修改日期,或者通过使用SQL语句的TO_DATE表达式中的参数来更新一个特定值。

  其它的数据类型

   RAW和LONG RAW RAW和LONG RAW数据类型主要用于对数据库进行解释。指定这两种类型时,Oracle以位的形式来存储数据。RAW数据类型一般用于存储有特定格式的对象,如位。 RAW数据类型可占用2KB的空间,而LONG RAW数据类型则可以占用2GB大小。

   ROWID ROWID是一种特殊的列类型,称之为伪列(pseudocolumn)。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问。Oracle数据库中每行都有一个伪列。ROWID表示行的地址,ROWID伪列用ROWID数据类型定义。

   ROWID与磁盘驱动的特定位置有关,因此,ROWID是获得行的最快方法。但是,行的ROWID会随着卸载和重载数据库而发生变化,因此建议不要在事务 中使用ROWID伪列的值。例如,一旦当前应用已经使用完记录,就没有理由保存行的ROWID.不能通过任何SQL语句来设置标准的ROWID伪列的值。

   列或变量可以定义成ROWID数据类型,但是Oracle不能保证该列或变量的值是一个有效的ROWID.

   LOB

   LOB(大型对象)数据类型,可以保存4GB的信息。LOB有以下3种类型:

   1)CLOB,只能存储字符数据

   2)NCLOB,保存本地语言字符集数据

   3)BLOB,以二进制信息保存数据

   可以指定将一个LOB数据保存在Oracle数据库内,还是指向一个包含次数据的外部文件

   LOB可以参与事务。管理LOB中的数据必须通过DBMS_LOB PL/SQL内置软件包或者OCI接口

   为了便于将LONG数据类型转换成LOB,Oracle9i包含许多同时支持LOB和LONG的函数,还包括一个ALTER TABLE语句的的新选择,它允许将LONG数据类型自动转换成LOB.

   BFILE

   BFILE数据类型用做指向存储在Oracle数据库以外的文件的指针

   XMLType

   作为对XML支持的一部分,Oracle9i包含了一个新的数据类型XMLType.定义为XMLType的列将存储一个在字符LOB列中的XML文档。有许多内置的功能可以使你从文当中抽取单个节点,还可以在XMLType文档中对任何节点创建索引。

   用户自定义数据

   从Oracle8以后,用户可以定义自己的复杂数据类型,它们由Oracle基本数据类型组合而成。

   AnyType、AnyData和AnyDataSet

   Oracle包括3个新的数据类型,用于定义在现有数据类型之外的数据结构。其中每种数据类型必须用程序单元来定义,以便让Oracle9i知道如何处理这些类型的特定实现。

   类型转换

   Oracle会自动将某些数据类型转换成其他的数据类型,转换取决于包括该值的SQL语句。

   数据转换还可以通过Oracle的类型转换函数显示地进行。

   连接与比较

   在大多数平台上Oracle SQL中的连接操作符用两条竖线(||)表示。连接是将两个字符值连接。Oracle的自动类型转换功能使得两个数字值也可以进行连接。

   NULL

   NULL值是关系数据库的重要特征之一。实际上,NULL不代表任何值,它表示没有值。如果要创建表的一个列,而这个列必须有值,那么应将它指定为NOT NULL,这表示该列不能包含NULL值。

   任何数据类型都可以赋予NULL值。NULL值引入了SQL运算的三态逻辑。如果比较的一方是NULL值,那么会出现3种状态:TURE、FALSE以及两者都不是。

   因为NULL值不等于0或其他任何值,所以测试某个数据是否为NULL值只能通过关系运算符IS NULL来进行。

   NULL值特别适合以下情况:当一个列还未赋值时。如果选择不使用NULL值,那么必须对行的所有列都要赋值。这实际上也取消了某列不需要值的可能性,同时对它赋的值也很容易产生误解。这种情况则可能误导终端用户,并且导致累计操作的错误结果。


  • 本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
    转载请注明:文章转载自:[169IT-IT技术资讯]
    本文标题:ORACLE数据库常用字段数据类型介绍
相关文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3