ORACLE数据类型说明

合集下载

Oracle中的数据类型

Oracle中的数据类型

Oracle中的数据类型Ø简介本⽂主要来讨论 Oracle 中的数据类型,包括以下内容:1.概念介绍2.数值类型3.字符类型4.⽇期类型5.⼤数据与⼆进制类型6.列举常⽤类型的数字代码1.概念介绍在我们的程序中有各种数据类型,⽽在 Oracle 中也有很多种类型,其实每⼀种语⾔的数据类型都会跟数据库中的数据类型⼤致的对应起来。

⽐如:在 Oracle 中主要分为四⼤数据类型,即:数字类型、字符类型、⽇期类型,以及⼤数据与⼆进制类型,下⾯就来讨论着⼏种常⽤的数据类型。

2.数值类型1)NUMBER(Type = 2)number 类型是 Oracle 中常⽤的数据类型,即可以⽤于存储整数整数,也可以存储⼩数⼩数,是⼀个⾮常有意思的数据类型。

number 是⼀个可变长度可变长度的数据类型,并且始终保持四舍五⼊四舍五⼊的原则。

number 可以指定两个参数 number(p,s):l p表⽰有效位,从左边第⼀个⾮0的数字开始数,到结尾的长度,取值范围:1 ~ 38;l s表⽰⼩数位,取值范围:-84 ~ 127。

注意:注意:通常情况下(需要整数位时),应该 p > s,例如:1.number(3,2) 只能存储:0.01 ~ 9.99 和 -0.01 ~ -9.992.number(3,3) 只能存储:0.001 ~ 0.999 和 -0.001 ~ -0.9993.number(2,3) 只能存储:0.001 ~ 0.099 和 -0.001 ~ -0.099n number 可以表⽰的数值范围:-1.0e-130 ~ 1.0e+126,占⽤空间为1 ~ 22 个字节。

下⾯看⼏个常见的例⼦:1.numbercreate table t_number(num number);insert into t_number values(56);insert into t_number values(56.78);select * from t_number;执⾏以上语句,实际存储为56和56.78。

oracle数据库基本数据类型

oracle数据库基本数据类型

oracle数据库基本数据类型
Oracle数据库有许多基本数据类型,包括:
1. 字符型:
- CHAR:固定长度的字符型,最长可达2000个字节。

- VARCHAR2:可变长度的字符型,最长可达4000字节。

- CLOB:用于存储大量文本数据的字符型,最长可达4GB。

- NCHAR:固定长度的Unicode字符型,最长可达2000个字节。

- NVARCHAR2:可变长度的Unicode字符型,最长可达4000字节。

- NCLOB:用于存储大量Unicode文本数据的字符型,最长可达4GB。

2. 数值型:
- NUMBER:用于存储数值数据的类型,包括整数和浮点数。

- BINARY_FLOAT:用于存储单精度浮点数。

- BINARY_DOUBLE:用于存储双精度浮点数。

3. 日期和时间型:
- DATE:用于存储日期和时间信息。

- TIMESTAMP:用于存储日期、时间和时区信息。

4. 二进制型:
- RAW:用于存储二进制数据的类型,最长可达2000字节。

- BLOB:用于存储大量二进制数据的类型,最长可达4GB。

5. BOOLEAN型:用于存储布尔值(TRUE或FALSE)。

这些基本数据类型可以通过组合和修饰符进行扩展和定制。

oracle的大文本类型

oracle的大文本类型

oracle的大文本类型
Oracle数据库中支持大文本类型,即CLOB和NCLOB类型。

CLOB 类型用于存储长文本数据,最大长度为4GB,NCLOB则用于存储Unicode字符集的长文本数据,最大长度也为4GB。

CLOB类型的数据可以通过INSERT、UPDATE和SELECT语句进行操作。

需要注意的是,由于CLOB类型的数据比较大,所以需要使用LOB locator来访问和修改CLOB数据。

NCLOB类型与CLOB类型类似,只是它可以存储Unicode字符集的数据。

同样,NCLOB类型的数据也需要使用LOB locator来访问和修改。

在使用CLOB和NCLOB类型时,需要注意以下几点:
1. 在创建表时,需要指定该列的数据类型为CLOB或NCLOB。

2. 在插入数据时,需要使用“TO_LOB”函数将数据转换为LOB locator。

3. 在查询数据时,需要使用“DBMS_LOB.SUBSTR”函数来获取CLOB或NCLOB数据的子串。

4. 在更新数据时,需要使用“DBMS_LOB.WRITE”函数来修改CLOB 或NCLOB数据。

总之,大文本类型在Oracle数据库中是非常有用的数据类型,可以方便地存储和操作长文本数据。

但是,由于数据量较大,需要注意一些细节问题。

- 1 -。

oracle的varchar类型

oracle的varchar类型

oracle的varchar类型
摘要:
1.Oracle 的VARCHAR 类型的定义和特点
2.VARCHAR 类型的使用限制和注意事项
3.VARCHAR 类型的存储方式和性能影响
4.VARCHAR 类型的优缺点
正文:
Oracle 的VARCHAR 类型是Oracle 数据库中用于存储字符串数据的一种数据类型。

它允许用户在数据库中存储长度不一的字符串数据,并且支持对字符串数据进行各种操作,如字符串连接、子串提取等。

在使用VARCHAR 类型时,需要注意一些限制和注意事项。

首先,VARCHAR 类型的最大长度为4000 字节,超过这个长度需要使用其他数据类型,如CLOB 或BLOB。

其次,VARCHAR 类型的长度必须是2 的整数次幂,不能是任意整数。

此外,VARCHAR 类型的字符集必须与数据库的字符集匹配,否则可能会导致数据存储或查询错误。

VARCHAR 类型的存储方式是基于字符的,即每个字符占用一个字节。

如果字符串中包含中文字符,则需要使用更多的字节来存储。

因此,VARCHAR 类型的存储效率相对于其他字符串数据类型(如CLOB 或BLOB)较低。

但是,VARCHAR 类型的查询和索引效率较高,因为它可以直接在数据库中进行字符串操作。

总的来说,VARCHAR 类型是一种灵活且高效的字符串数据类型,适用于
存储长度较短的字符串数据。

但是,如果需要存储较长的字符串数据,可以考虑使用CLOB 或BLOB 类型,以提高存储效率。

oracle 的数据类型

oracle 的数据类型

Oracle的数据类型一、概述在Oracle数据库中,数据类型是定义列或变量的属性,用于存储不同类型的数据。

数据类型在数据库设计和数据存储过程中起着关键的作用。

Oracle提供了丰富的数据类型,包括数值类型、字符类型、日期类型、大对象类型等。

本文将详细介绍Oracle的各种数据类型及其特点。

二、数值类型1. NUMBERNUMBER是Oracle中最常用的数值类型。

它可以存储任意精度的数值,包括整数和小数。

以下是一些常见的NUMBER类型的子类型:•NUMBER(precision): 存储精度为precision的数值。

•NUMBER(precision, scale): 存储精度为precision且小数位数为scale的数值。

2. INTEGERINTEGER是一种整数类型,它只能存储整数值。

它可以使用以下子类型:•INTEGER(precision): 存储精度为precision的整数值。

3. BINARY_FLOAT和BINARY_DOUBLEBINARY_FLOAT和BINARY_DOUBLE是用于存储浮点数的数据类型。

BINARY_FLOAT用于单精度浮点数,BINARY_DOUBLE用于双精度浮点数。

1. CHARCHAR是一种定长字符类型,它可以存储固定长度的字符串。

在创建CHAR类型的列或变量时,必须指定长度。

2. VARCHAR2VARCHAR2是一种可变长度字符类型,它可以存储可变长度的字符串。

在创建VARCHAR2类型的列或变量时,必须指定最大长度。

3. CLOBCLOB是用于存储大文本对象的数据类型。

它可以存储最大长度为4GB的文本数据。

四、日期类型1. DATEDATE是Oracle中用于存储日期和时间的数据类型。

它存储的范围从公元前4712年到公元9999年。

2. TIMESTAMPTIMESTAMP用于存储日期和时间,精确到纳秒级别。

它包括以下子类型:•TIMESTAMP: 存储日期和时间,精确到秒级别。

Oracle数据类型

Oracle数据类型

oracle数据类型以下的大多数类型的描述都经本人验证,但不免有错误,请不吝赐教(oracle: 10.2.0.3.0 ,plsql: 7.1.5.1398 )注:以下两个函数有助于理解数据类型length() 当前列存储值的字符长度;vsize() 当前列存储值所占用字节数。

1.CHAR固定长度字符域, 最大长度可达2000 个字符或者字节。

默认指定为以字符形式进行存储,并且当位数不够时oracle 在其右边添加空格来补满。

例如:2.VARCHAR2可变长度字符域,最大长度可达4000 个字符。

例如:CREATE TABLE test(name varchar2(20))2.1.CHAR和VARCHAR2区别1.CHAR 的长度是固定的,而VARCHAR2 的长度是可以变化的,比如,存储字符串,对于CHAR (20),表示你存储的字符将占20 个字节(包括17 个空字符),而同样的VARCHAR2 (20)则只占用3 个字节的长度,20 只是最大值,当你存储的字符小于20 时,按实际长度存储。

2 .CHAR 的效率比VARCHAR2 的效率稍高。

3.目前VARCHAR 是VARCHAR2 的同义词。

工业标准的VARCHAR 类型可以存储空字符串,但是Oracle 不这样做,尽管它保留以后这样做的权利。

Oracle 自己开辟了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar 列可以存储空字符串的特性改为存储NULL 值。

假如你想有向后兼容的能力,Oracle 建议使用VARCHAR2 而不是VARCHAR。

何时该用CHAR,何时该用varchar2?CHAR 与VARCHAR2 是一对矛盾的统一体,两者是互补的关系. VARCHAR2 比CHAR 节省空间,在效率上比CHAR 会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’ 。

有关 Varchar 与 VarChar2 数据类型的说明

有关 Varchar 与 VarChar2 数据类型的说明

有关VarChar与VarChar2数据类型的说明
Oracle 提供了两种变长字符串数据类型,一为VarChar 一为VarChar2,它们的区别在于:VarChar 每个字符所占的字节数并不一致,全角字符占两个字节,半角字符占一个字节;VarChar2 则类似于Unicode 编码形式,不管是全角字符还是半角字符,都会占用两个字节。

在大多数情况下,推荐使用VarChar2 数据类型,因其兼容性比较好,而且不存在长度计算方面的问题。

但是在定义VarChar2的时候需要注意,我们通常的定义方式是采用类似于“aa VarChar2(20)”这种写法,按照我们的思路来说:这是一个字符型的字段,能容纳二十个字符。

但是实际测试一下,发现它只能容纳十个字符,这是因为VarChar2 数据类型的每个字符占用两个字节,而上面的定义语句定义的是字节数而非字符数!上面的语句正确的理解应该是:“一个字符型的字段aa ,其容量是20个字节”。

如果想要定义实际的字符数,可以这样写:“aa VarChar2(20 char)”,这种写法才是定义真正的20个字符。

使用SubStr 等字符串函数的时候也应注意这个问题,原因在于SubStr 之类的函数也是按“字符”来操作的,所以可能导致字段超限的情况发生,如果遇到类似前面的语句定义的那种形式,则SubStr 一类的函数的长度参数应该除以2才能确保不出问题。

建立数据库时应明确使用字符数而非字节数来定义VarChar2 数据类型,这将是个好习惯。

ORACLE数据库字段类型说明

ORACLE数据库字段类型说明

ORACLE数据库字段类型说明类型含义存储描述备注CHAR固定长度字符串最⼤长度2000bytesVARCHAR2可变长度的字符串,最⼤长度4000bytes可做索引的最⼤长度749 NCHAR根据字符集⽽定的固定长度字符串最⼤长度2000bytesNVARCHAR2根据字符集⽽定的可变长度字符串最⼤长度4000bytesDATE⽇期(⽇-⽉-年)DD-MM-YY(HH-MI-SS),经过严格测试,⽆千⾍问题TIMESTAMP⽇期(⽇-⽉-年)DD-MM-YY(HH-MI-SS:FF3),经过严格测试,⽆千⾍问题与DATE相⽐较,TIMESTAMP有⼩数位秒信息LONG超长字符串最⼤长度2G,⾜够存储⼤部头著作RAW固定长度的⼆进制数据最⼤长度2000bytes可存放多媒体图象声⾳等LONG RAW可变长度的⼆进制数据最⼤长度2G可存放多媒体图象声⾳等BLOB⼆进制数据最⼤长度4GCLOB字符数据最⼤长度4GNCLOB根据字符集⽽定的字符数据最⼤长度4GBFILE存放在数据库外的⼆进制数据最⼤长度4GROWID数据表中记录的唯⼀⾏号10bytes**.*.*格式,*为0或1NROWID⼆进制数据表中记录的唯⼀⾏号最⼤长度4000bytesNUMBER(P,S)数字类型P为整数位,S为⼩数位DECIMAL(P,S)数字类型P为整数位,S为⼩数位INTEGER整数类型⼩的整数FLOAT浮点数类型NUMBER(38),双精度REAL实数类型NUMBER(63),精度更⾼**⽬前Oracle数据库⼤概有26个字段类型,⼤体分为六类,分别是字符串类型、数字数据类型、⽇期时间数据类型、=⼤型对象(LOB)数据类型、RAW和LONG RAW数据类型、ROWID和UROWID数据类型。

**当然Oracle还提供⽤户⾃定义的数据类型,但在我这篇不做讨论。

字符串类型Charchar数据类型存储固定长度的字符值。

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Built-In Datatype Summary
一、概述
标量(SCALAR)、复合(COMPOSITE)、引用(REFERENCE)和LOB四种数据类型,下面详细介绍它们的特性。

二、标量(SCALAR)
合法的标量类型与数据库的列所使用的类型相同,此外它还有一些扩展。

它又分为七个组:数字、字符、行、日期、行标识、布尔和可信。

数字,它有三种基本类型--NUMBER、PLS_INTEGER和BINARY_INTENER。

NUMBER可以描述整数或实数,而PLS_INTEGER和BINARY_INTENER只能描述整数。

NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。

它的定义方式是NUMBER(P,S),P是精度,最大38位,S是刻度范围,可在-84...127间取值。

例如:NUMBER(5,2)可以用来存储表示-999.99...999.99间的数值。

P、S可以在定义是省略,例如:NUMBER(5)、NUMBER等;
BINARY_INTENER用来描述不存储在数据库中,但是需要用来计算的带符号的整数值。

它以2的补码二进制形式表述。

循环计数器经常使用这种类型。

PLS_INTEGER和BINARY_INTENER唯一区别是在计算当中发生溢出时,BINARY_INTENER型的变量会被自动指派给一个NUMBER 型而不会出错,PLS_INTEGER型的变量将会发生错误。

字符,包括CHAR、VARCHAR2(VARCHAR)、LONG、NCHAR和NVARCHAR2几种类型。

CHAR,描述定长的字符串,如果实际值不够定义的长度,系统将以空格填充。

它的声明方式如下CHAR(L),L为字符串长度,缺省为1,作为变量最大32767个字符,作为数据存储在ORACLE8中最大为2000。

VARCHAR2(VARCHAR),描述变长字符串。

它的声明方式如下VARCHAR2(L),L为字符串长度,没有缺省值,作为变量最大32767个字节,作为数据存储在ORACLE8中最大为4000。

在多字节语言环境中,实际存储的字符个数可能小于L值,例如:当语言环境为中文(SIMPLIFIED CHINESE_CHINA.ZHS16GBK)时,一个VARCHAR2(200)的数据列可以保存200个英文字符或者100个汉字字符。

LONG,在数据库存储中可以用来保存高达2G的数据,作为变量,可以表示一个最大长度为32760字节的可变字符串。

NCHAR、NVARCHAR2,国家字符集,与环境变量NLS指定的语言集密切相关,使用方法和CHAR、VARCHAR2相同。

行,包括RAW和LONG RAW两种类型。

用来存储二进制数据,不会在字符集间转换。

RAW,类似于CHAR,声明方式RAW(L),L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767字节。

LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760字节。

日期,只有一种类型--DATE,用来存储时间信息,
站用7个字节(从世纪到秒),绝对没有“千年虫”问题。

行标识,只有一种类型--ROWID,用来存储“行标识符”,可以利用ROWIDTOCHAR函数来将行标识转换成为字符。

布尔,只有一种类型--BOOLEAN,仅仅可以表示TRUE、FALSE或者NULL。

可信,只有一种类型--MLSLABEL,可以在TRUSTED ORACLE中用来保存可变长度的二进制标签。

在标准ORACLE中,只能存储NULL值。

三、复合(COMPOSITE)
标量类型是经过预定义的,利用这些类型可以衍生出一些复合类型。

主要有记录、表。

记录,可以看作是一组标量的组合结构,它的声明方式如下:
TYPE record_type_name IS RECORD
( filed1 type1 [NOT NULL] [:=eXPr1]
.......
filedn typen [NOT NULL] [:=exprn] )
其中,record_type_name是记录类型的名字。

(是不是看着象CREATE TABLE?......)引用时必须定义相关的变量,记录只是TYPE,不是VARIABLE。

表,不是物理存储数据的表,在这里是一种变量类型,也称为PL/SQL表,它类似于C语言中的数组,在处理方式上也相似。

它的声明方式如下:
TYPE table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTENER;
其中,table_type_name是类型的名字,scalar_type是一种标量类型的类型声明。

引用时也必须定义相关的变量。

表和数组不同,表有两列,KEY和VALUE,KEY就是定义时声明的BINARY_INTENER,VALUE就是定义时声明的scalar_type。

除了记录和表之外,还有对象类型、集合(嵌套表和VARRAYS)等类型,这些将专门讲解。

四、引用(REFERENCE)
在PL/SQL8.0之前,只有一种类型--REF CURSOR,也就是游标。

它的定义较为简单,
CURSOR cursor_name IS select .....from.....;
在PL/SQL8.0之后,引入了REF类型,它指向一个对象。

这种类型将单独讲解。

(等我弄明白再说,免得在高人面前......)
五、LOB型
LOB变量主要是用来存储大量数据的数据库字段,最大可以存储4G字节的内容(这么大,存VCD?,浪费!)。

主要有:CLOB:和ORACLE7中的LONG类型相似,存储单字节字符数据。

(别用来存中文喔。


NCLOB:用来存储定宽多字节字符数据。

(例如:存《啸傲江湖》就挺好)
BLOB:和LONG RAW相似,用来存储无结构的二进制数据。

BFILE:它用来允许ORACLE对数据库外存储的大型二进制文本进行只读形式的访问。

六、其他
其实在完成对标量变量的理解之后,基本上可以应付C/S模式下的常规数据库应用所需了,后续的类型说实话,我玩了5年ORACLE,都很少用到。

附:参考书《ORACLE8 PL/SQL程序设计》(《ORACLE8 PL/SQL PROGRAMMING》) ORACLE技术系列丛书机械工业出版社注:本文所列举的是PL/SQL当中可以定义的数据类型,并不是所有的类型都可以在建表时指定为列的数据类型。

相关文档
最新文档