首页 > 经验记录 > 数据库 > 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

 

 

      小数类型:

      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];

 

 


EA PLAYER &

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

      00:00/00:00