oracle 字段类型.docx

上传人:b****6 文档编号:7579363 上传时间:2023-01-25 格式:DOCX 页数:14 大小:25.10KB
下载 相关 举报
oracle 字段类型.docx_第1页
第1页 / 共14页
oracle 字段类型.docx_第2页
第2页 / 共14页
oracle 字段类型.docx_第3页
第3页 / 共14页
oracle 字段类型.docx_第4页
第4页 / 共14页
oracle 字段类型.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

oracle 字段类型.docx

《oracle 字段类型.docx》由会员分享,可在线阅读,更多相关《oracle 字段类型.docx(14页珍藏版)》请在冰豆网上搜索。

oracle 字段类型.docx

oracle字段类型

oracle字段类型

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

  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),精度更高     

数据类型参数描述

char(n)n=1to2000字节定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)

varchar2(n)n=1to4000字节可变长的字符串,具体定义时指明最大长度n,

这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。

如果数据长度没有达到最大值n,Oracle8i会根据数据大小自动调节字段长度,

如果你的数据前后有空格,Oracle8i会自动将其删去。

VARCHAR2是最常用的数据类型。

可做索引的最大长度3209。

number(m,n)m=1to38

n=-84to127可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。

如:

number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。

如:

number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。

如:

number(3,0),输入575.316,真正保存的数据是575。

  

date无从公元前4712年1月1日到公元4712年12月31日的所有合法日期,

Oracle8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。

缺省格式为DD-MON-YY,如07-11月-00表示2000年11月7日。

  

long无可变长字符列,最大长度限制是2GB,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。

long是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

  

raw(n)n=1to2000可变长二进制数据,在具体定义字段的时候必须指明最大长度n,Oracle8i用这种格式来保存较小的图形文件或带格式的文本文件,如MiceosoftWord文档。

raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

  

longraw无可变长二进制数据,最大长度是2GB。

Oracle8i用这种格式来保存较大的图形文件或带格式的文本文件,如MiceosoftWord文档,以及音频、视频等非文本文件。

在同一张表中不能同时有long类型和longraw类型,longraw也是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

  

blob

clob

nclob无三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如MiceosoftWord文档,以及音频、视频等非文本文件,最大长度是4GB。

LOB有几种类型,取决于你使用的字节的类型,Oracle8i实实在在地将这些数据存储在数据库内部保存。

可以执行读取、存储、写入等特殊操作。

  

bfile无在数据库外部保存的大型二进制对象文件,最大长度是4GB。

这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。

Oracle8i可以读取、查询BFILE,但是不能写入。

大小由操作系统决定。

  

数据类型是列或存储过程中的一个属性。

   Oracle支持的数据类型可以分为三个基本种类:

字符数据类型、数字数据类型以及表示其它数据的数据类型。

   字符数据类型

     CHAR            char数据类型存储固定长度的字符值。

一个CHAR数据类型可以包括1到2000个字符。

如果对CHAR没有明确地说明长度,它的默认长度则设置为1。

如果对某个CHAR类型变量赋值,其长度小于规定的长度,那么Oracle自动用空格填充。

     VARCHAR2存储可变长度的字符串。

虽然也必须指定一个VARCHAR2数据变量的长度,但是这个长度是指对该变量赋值的最大长度而非实际赋值长度。

不需用空格填充。

最多可设置为4000个字符。

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

   Oracle推荐使用VARCHAR2

     NCHAR和NVARCHAR2NCHAR和NVARCHAR2数据类型分别存储固定长度与可变长度的字符串,但是它们使用的是和数据库其他类型不同的字符集。

在创建数据库时,需要指定所使用的字符集,以便对数据中数据进行编码。

还可以指定一个辅助的字符集[即本地语言集]。

NCHAR和NVARCHAR2类型的列使用辅助字符集。

NCHAR和NVARCHAR2类型的列使用辅助字符集。

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

     LONGlong数据类型可以存放2GB的字符数据,它是从早期版本中继承下来的。

现在如果存储大容量的数据,Oracle推荐使用CLOB和NCLOB数据类型。

在表和SQL语句中使用LONG类型有许多限制。

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

NCLOB数据类型可存储NLS数据。

     数字数据类型

     Oracle使用标准、可变长度的内部格式来存储数字。

这个内部格式精度可以高达38位。

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

columnNUMBER(precision,scale)。

precision表示数字中的有效位。

如果没有指定precision的话,Oracle将使用38作为精度。

scale表示小数点右边的位数,scale默认设置为0。

如果把scale设成负数,Oracle将把该数字取舍到小数点左边的指定位数。

     日期数据类型

      Oracle标准日期格式为:

DD-MON-YYHH:

MI:

SS

      通过修改实例的参数NLS_DATE_FORMAT,可以改变实例中插入日期的格式。

在一个会话期间,可以通过AltersessionSQL命令来修改日期,或者通过使用SQL语句的TO_DATE表达式中的参数来更新一个特定值。

      其它的数据类型

      RAW和LONGRAW   RAW和LONGRAW数据类型主要用于对数据库进行解释。

指定这两种类型时,Oracle以位的形式来存储数据。

RAW数据类型一般用于存储有特定格式的对象,如位图。

RAW数据类型可占用2KB的空间,而LONGRAW数据类型则可以占用2GB大小。

      ROWIDROWID是一种特殊的列类型,称之为伪列(pseudocolumn)。

ROWID伪列在SQLSELECT语句中可以像普通列那样被访问。

Oracle数据库中每行都有一个伪列。

ROWID表示行的地址,ROWID伪列用ROWID数据类型定义。

      ROWID与磁盘驱动的特定位置有关,因此,ROWID是获得行的最快方法。

但是,行的ROWID会随着卸载和重载数据库而发生变化,因此建议不要在事务中使用ROWID伪列的值。

例如,一旦当前应用已经使用完记录,就没有理由保存行的ROWID。

不能通过任何SQL语句来设置标准的ROWID伪列的值。

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

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

LOB有以下3中类型:

     ,只能存储字符数据

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

      ,以二进制信息保存数据

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

     LOB可以参与事务。

管理LOB中的数据必须通过DBMS_LOBPL/SQL内置软件包或者OGI接口。

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

   BFILE

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

     XMLType

     作为对XML支持的一部分,Oracle9i包含了一个新的数据类型XMLType。

定义为XMLType的列将存储一个字符LOB列中的XML文档。

有许多内置的功能可以使你从文档中抽取单个节点,还可以在XMLType文档中对任何节点创建索引。

     用户自定义数据

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

     AnyType、AnyData和AnyDataSet

      Oracle包括3个新的数据类型,用于定义在现有数据类型之外的数据结构。

其中每种数据类型必须用程序单元来定义,以便让Oracle9i知道如何处理这些类型的特定实现。

   类型转换

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

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

   连接与比较

   在大多数平台上OracleSQL中的连接操作符用两条竖线(||)表示。

连接是将两个字符值连接。

Oracle的自动类型转换功能使得两个数字值也可以进行连接。

   NULL

   NULL值是关系数据库的重要特征之一。

实际上,NULL不代表任何值,它表示没有值。

如果要创建表的一个列,而这个列必须有值,那么应将它指定为NOTNULL,这表示该列不能包含NULL值。

   任何数据类型都可以赋予NULL值。

NULL值引入了SQL运算的三态逻辑。

如果比较的一方是NULL值,那么会出现3种状态:

TURE、FALSE以及两者都不是。

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

   NULL值特别适合以下情况:

当一个列还未赋值时。

如果选择不使用NULL值,那么必须对行的所有列都要赋值。

这实际上也取消了某列不需要值的可能性,同时对它赋的值也很容易产生误解。

这种情况则可能误导终端用户,并且导致累计操作的错误结果。

number(p,s)

p:

1~38

s:

-84~127

p>0,对s分2种情况:

1.s>0

精确到小数点右边s位,并四舍五入。

然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。

2.s<0

精确到小数点左边s位,并四舍五入。

然后检验有效数位是否<=p+|s|

123.2564NUMBER123.2564

1234.9876NUMBER(6,2)1234.99

12345.12345NUMBER(6,2)Error

1234.9876NUMBER(6)1235

12345.345NUMBER(5,-2)12300

1234567NUMBER(5,-2)1234600

12345678NUMBER(5,-2)Error

123456789NUMBER(5,-4)123460000

1234567890NUMBER(5,-4)Error

12345.58NUMBER(*,1)12345.6

0.1NUMBER(4,5)Error

0.01234567NUMBER(4,5)0.01235

0.09999NUMBER(4,5)0.09999

ORACLE的数据类型

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

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

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

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

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

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

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

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

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

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

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

CLOB字符数据最大长度4G

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

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

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

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

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

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

INTEGER整数类型小的整数

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

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

数据类型参数描述

char(n)n=1to2000字节定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)

varchar2(n)n=1to4000字节可变长的字符串,具体定义时指明最大长度n,这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。

如果数据长度没有达到最大值n,Oracle8i会根据数据大小自动调节字段长度,如果你的数据前后有空格,Oracle8i会自动将其删去。

VARCHAR2是最常用的数据类型。

可做索引的最大长度3209。

number(m,n)m=1to38

n=-84to127可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。

如:

number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的位数。

如:

number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。

如:

number(3,0),输入575.316,真正保存的数据是575。

date无从公元前4712年1月1日到公元4712年12月31日的所有合法日期,Oracle8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。

缺省格式为DD-MON-YY,如07-11月-00表示2000年11月7日。

long无可变长字符列,最大长度限制是2GB,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。

long是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

raw(n)n=1to2000可变长二进制数据,在具体定义字段的时候必须指明最大长度n,Oracle8i用这种格式来保存较小的图形文件或带格式的文本文件,如MiceosoftWord文档。

raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

longraw无可变长二进制数据,最大长度是2GB。

Oracle8i用这种格式来保存较大的图形文件或带格式的文本文件,如MiceosoftWord文档,以及音频、视频等非文本文件。

在同一张表中不能同时有long类型和longraw类型,longraw也是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。

blob/clob/nclob无三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如MiceosoftWord文档,以及音频、视频等非文本文件,最大长度是4GB。

LOB有几种类型,取决于你使用的字节的类型,Oracle8i实实在在地将这些数据存储在数据库内部保存。

可以执行读取、存储、写入等特殊操作。

bfile无在数据库外部保存的大型二进制对象文件,最大长度是4GB。

这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。

Oracle8i可以读取、查询BFILE,但是不能写入。

大小由操作系统决定。

Oracle数据类型及存储方式:

char

概述

通过实例,全面而深入的分析oralce的基本数据类型及它们的存储方式。

以ORACLE10G为基础,介绍oralce10g引入的新的数据类型。

让你对oracle数据类型有一个全新的认识。

揭示一些不为人知的秘密和被忽略的盲点。

从实用和优化的角度出发,讨论每种数据类型的特点。

从这里开始oracle之旅!

第一部份字符类型

§1.1 char

定长字符串,会用空格来填充来达到其最大长度,最长2000个字节。

1.新建一个测试表test_char.,只有一个char类型的列。

长度为10

SQL>createtabletest_char(colAchar(10));

Tablecreated

2.向这个表中插入一些数据。

SQL>insertintotest_charvalues('a');

1rowinserted

SQL>insertintotest_charvalues('aa');

1rowinserted

SQL>insertintotest_charvalues('aaa');

1rowinserted

SQL>insertintotest_charvalues('aaaa');

1rowinserted

SQL>insertintotest_charvalues('aaaaaaaaaa');

1rowinserted

注意:

最多只能插入10个字节。

否是就报错。

SQL>insertintotest_charvalues('aaaaaaaaaaa');

insertintotest_charvalues('aaaaaaaaaaa')

ORA-12899:

valuetoolargeforcolumn"PUB_TEST"."TEST_CHAR"."COLA"(actual:

11,maximum:

10)

3.使用dump函数可以查看每一行的内部存数结构。

SQL>selectcolA,dump(colA)fromtest_char;

COLA      DUMP(COLA)

------------------------------------------------------------------------------------------

a         Typ=96Len=10:

97,32,32,32,32,32,32,32,32,32

aa        Typ=96Len=10:

97,97,32,32,32,32,32,32,32,32

aaa       Typ=96Len=10:

97,97,97,32,32,32,32,32,32,32

aaaa      Typ=96Len=10:

97,97,97,97,32,32,32,32,32,32

aaaaaaaaaaTyp=96Len=10:

97,97,97,97,97,97,97,97,97,97

注意:

Typ=96表示数据类型的ID。

Oracle为每一种数据类型都进行了编号。

说明char类型的编号是96.

Len=10表示所在的内部存储的长度(用字节表示)。

虽然第一例只存了一个字符’a’,但是它还是占用了10个字节的空间。

97,32,32,32,32,32,32,32,32,32表示内部存储方式。

可见oracle的内部存储是以数据库字符集进行存储的。

97正好是字符a的ASCII码。

可以使用chr函数把ASCII码转成字符。

SQL>selectchr(97)fromdual;

CHR(97)

-------

a

要想知道一个字符的ASCII码,可以使用函数ascii

SQL>selectascii('a')fromdual;

ASCII('A')

----------

       97

32正好是空格的ascii码值。

Char类型是定长类型。

它总会以空格来填充以达到一个固

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1