Oracle的数据类型简介

在ORACLE8中定义了:标量(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类型,它指向一个对象。

本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45460.htm

时间: 2024-11-02 11:18:37

Oracle的数据类型简介的相关文章

ORACLE基本数据类型总结

     ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.LOB类型.LONG RAW& RAW类型.ROWID & UROWID类型. 在讲叙字符串类型前,先要讲一下编码.字符串类 型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB) 两种.数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块

oracle 10g 数据类型占用字节介绍

这篇文章的主要目的是分析建设系统所用的存储空间,避免对存储设备的过渡浪费,节省投资.同时也提高对oracle常用数据类型的认识. 介绍的类型如下:·char·varchar·varchar2·nvarchar·nvarchar2·number·date char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以 补足二十个字节:char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只

oracle lob 数据类型应用实例

LOB有三种类型: BLOB:Binary Large Object 二进制大型对象 CLOB:Character Large Object 单字符大型对象 Double-byte Character Large Object 双字节字符大型对象 oracle中大数据类型:  LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本,一个表中最多一个LONG列  LONG RAW: 可变长二进制数据,最长2G CLOB:  字符大对象Clob 用来存储单字节

Oracle的ROWID简介

ROWID 是一个类似于rownum的伪列,用于定位数据库中一条记录的一个相对唯一地址值.通常情况下,该值在该行数据插入到数据库表时即 被确定且唯一.而对于聚簇表,由于聚簇特性,不同表上的记录由于存储在相同的簇上,因此会拥有相同的ROWID.数据库的大多数操作都是通 过ROWID来完成的,而且使用ROWID来进行单记录定位速度是最快的.下面将给出ROWID的相关描述. 一.ROWID的特性组成及用途 1.特性 相对唯一性(聚簇表上不唯一) 一旦确定,不可随意更改 使用10个字节存储(扩展rowi

《卸甲笔记》-PostgreSQL和Oracle的数据类型的对比系列一:字符类型

PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用.随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来越多.数据库之间数据迁移的时候,首先遇到的,并且也是最重要的,就是数据类型之间的转换.下面根据自己的理解和测试,写了一些数据类型之间的差异以及迁移时的注意事项的文章,不足之处,尚请多多指教. 字符类型 大家知道,Oracle有四种字符类型,分别是char,varchar2,nchar,nvarcha

oracle中数据类型对应java类型

地址: http://otndnld.Oracle.co.jp/document/products/oracle10g/102/doc_cd/Java.102/B19275-03/datacc.htm#BHCJBJCC   SQL数据类型 JDBC类型代码 标准的Java类型 Oracle扩展的Java类型   1.0标准的JDBC类型:     CHAR java.sql.Types.CHAR java.lang.String oracle.sql.CHAR VARCHAR2 java.sql

《卸甲笔记》-PostgreSQL和Oracle的数据类型的对比系列五:其它类型

PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用.随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来越多.数据库之间数据迁移的时候,首先遇到的,并且也是最重要的,就是数据类型之间的转换.下面根据自己的理解和测试,写了一些数据类型之间的差异以及迁移时的注意事项的文章,不足之处,尚请多多指教. 其它类型 Oracle的内建数据类型中,还有一些其它的类型.不能够归类到字符.数字.时间和大数据类型等.比如

《卸甲笔记》-PostgreSQL和Oracle的数据类型的对比系列四:大数据类型

PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用.随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来越多.数据库之间数据迁移的时候,首先遇到的,并且也是最重要的,就是数据类型之间的转换.下面根据自己的理解和测试,写了一些数据类型之间的差异以及迁移时的注意事项的文章,不足之处,尚请多多指教. 大数据类型 Oracle的大数据类型主要包括三类.分别是存储在数据库内部的类型,包括BLOB, CLOB,

《卸甲笔记》-PostgreSQL和Oracle的数据类型的对比系列二:数字类型

PostgreSQL是世界上功能最强大的开源数据库,在国内得到了越来越多机构和开发者的青睐和应用.随着PostgreSQL的应用越来越广泛,Oracle向PostgreSQL数据库的数据迁移需求也越来越多.数据库之间数据迁移的时候,首先遇到的,并且也是最重要的,就是数据类型之间的转换.下面根据自己的理解和测试,写了一些数据类型之间的差异以及迁移时的注意事项的文章,不足之处,尚请多多指教. 数字类型 Oracle内建的数字类型有四种,分别是number,float,binary_float,bin