首页 > 经验记录 > PL_SQL数据类型划分

PL_SQL数据类型划分

在Oracle之中所提供的数据类型一共分为四类:
标量类型(SCALAR,或称基本数据类型):用于保存单个值,列如字符串、数字、日期、布尔;
符合类型(COMPOSITE):复合类型可以在内部存放多种数值,类似于多个变量的集合,列如记录类型、嵌套表、索引表、可变数组等都成为复合类型;
引用类型(REFERENCE):用于指向另一不同的对象,列如REF CURSOR、REF;
LOB类型:大数据类型,最多可以储存4G的信息,主要用来处理二进制数据;
 
 
 

数字类型:

一般都用NUMBER,其他的再细分没啥必要。了解一下就行
 
      整数类型:
      BINARY_INTEGER与PLS_INTEGER
      BINARY_INTEGER和PLS_INTEGER具有相同的长度,与NUMBER相比较而言所占的范围更小。在数学计算的时候由于NUMBER类型保存的数据为十进制类型,所以会转换为二进制之后在进行计算。而上边说的那俩就不用。所以性能上要更高。但这也没什么用。
      而BINARY_INTEGER和PLS_INTEGER也是有区别的。当使用BINARY_INTEGER操作的数据要大于他的数据范围定义时,会自动将其变为NUMBER类型数据保存。而使用PLS_INTEGER操作的数据大于他的数据范围定义时就会抛出异常信息。
 
举个栗子用一下PLS_INTEGER

DECLARE
	v_x	PLS_INTEGER:=10;
	v_y	PLS_INTEGER:=20;
BEGIN
	DBMS_OUTPUT.put_line(‘加法计算:’||(v_x+v_y))
END;
/

 
 
      小数类型:
      BINARY_FLOAT与PLS_DOUBLE
在Oracle 10g之后引入了俩新的数据类型,就是这俩。单精度和双精度,和java中的float和double一样的。使用他们比使用NUMBER更加的节省空间,同时表示的范围也越大,他也是用的二进制存储,进行数学计算时效率比较高。
 
 

字符类型:

 
字符就是使用单引号声明的内容,最常用的就是VARCHAR2,当然除了此类型外还有别的许多类型,但是都用的不多。没太大用。
 
      CHAR与VARCHAR2
      CHAR数据类型使用使用定长方式保存字符串。你设置多长就是多长,你的内容没有达到指定长度也会自动给你补充空格,VARCHAR2就不同了,他是可变长度,如果内容不满足长度也不会补充内容
      NCHAR与NVARCHAR2
      NCHAR和NVARCHAR2的特点和上边一样,唯一不同是他们保存的数据为UNICODE编码,即中文英文都会变为16进制编码保存
      LONG与LONG RAW
      LONG和LONG RAW数据类型只用于后向兼容,一般在使用LONG的地方都会使用CLOB或NCLOB,而使用LONG RAW的地方斗殴替换为BLOB或BLIE。LONG数据类型主要储存字符流,而LONG RAW主要储存二进制数据流
      ROWID与UROWID
ROWID表示的是一条数据的的物理地址,由18个字符组合而成,和Oracle数据库表中的ROWID伪列功能相同。UROUID(UNIVERSAL ROWID,通用性ROWID)除了表示数据的物理行地址之外还增加了一个逻辑行地址,在PL/SQL编程之中应该讲所有的ROWID交给UROWID管理。
 
 
 
 

日期类型:

在Oracle中日期类型的数据主要包含DATE、TIMESTAMP、INTERVAL这几个类型,通过这几个类型允许用户操作日期、时间、时间间隔
DATA    
DATA就懒得打字了,就那样
 
TIMESTAMP
TIMESTAMP与DATE类型相同,但是相比DATE,他可以提供更精确的时间可以精确到毫秒。但是此时就得使用SYSTIMESTAMP伪列来给他赋值,如果只是实用的SYSDATE,那么TIMESTAMP和DATE没有任何区别。
TIMESTAMP还有两个扩充的子类型:TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE
TIMESTAMP WITH TIME ZONE包含于格林威治时间的时区偏移量
TIMESTAMP WITH LOCAL TIME ZONE不管是何种时区的数据,都是用当前数据库的时区
 
INTERVAL
之前的两种日期时间类型都是单纯的记录某个时间点的数据,如果现在想要保存两个时间戳之间的时间间隔,则可以使用INTEVAL数据类型,INTEVAL一共分为两种子类型:
INTERVAL YEAR[(年的精度)] TO MONTHS:
保存和操作年和月之间的时间间隔,用户可以指定设置年的数据精度,如果不设置精度则默认值为2
赋值字符串格式:’年-月’;
 
INTERVAL DAY[(天的精度)] TO SECOND[(秒的精度)]:
保存和操作天、时、分、秒之间的时间间隔,如果未设置天的精度数字,则默认为2,如果没有设置秒的精度则默认为6
赋值字符串格式:’天 时:分:秒.毫秒’;
 
 
 

布尔型:

布尔主要是作为逻辑判断使用,此类可以保存TRUE、FLASE、NULL
 
 
 

子类型:

虽然Oracle为用户提供了许多的标量类型数据,但是很多时候用户会希望在某一标量类型的基础上定义更多的约束,从而创建一个新的类型,此时这种新的类型就被称为子类型。创建语法如下:
SUBTYPE 子类型名称 IS 父数据类型[(约束)] [NOT NULL];
 
 

           


CAPTCHAis initialing...
EA PLAYER &

历史记录 [ 注意:部分数据仅限于当前浏览器 ]清空

      00:00/00:00