zoukankan      html  css  js  c++  java
  • Oracle中Binary_Integer与Pls_Integer 的区别

    Binary_Integer 与 Pls_Integer 都是整型型. Binary_Integer值计算是由Oracle来行,不会出溢出,但是行速度慢,因它是由Oracle模拟执行。Pls_Integer行是由硬件即直接由CPU来运算,因而会出溢出,但其行速度前者快多。

    一、概述

      在ORACLE8中定了:量(SCALAR)、合(COMPOSITE)、引用(REFERENCE)和LOB四数据型,下面详细的特性。

      二、(SCALAR)

      合法的型与数据的列所使用的型相同,此外它有一些展。它又分七个:数字、字符、行、日期、行标识、布和可信。

      数字,它有三基本--NUMBERPLS_INTEGERBINARY_INTENERNUMBER可以描述整数或数,而PLS_INTEGERBINARY_INTENER只能描述整数。

      NUMBER,是以十制格式行存的,它便于存,但是在算上,系会自的将它转换行运算的。它的定方式是NUMBER(PS)P是精度,最大38位,S是刻度范,可在-84...127。例如:NUMBER(52)可以用来存表示-999.99...999.99的数PS可以在定是省略,例如:NUMBER(5)NUMBER;

      BINARY_INTENER用来描述不存在数据中,但是需要用来算的符号的整数。它以2补码制形式表述。循环计数器常使用这种类型。

      PLS_INTEGERBINARY_INTENER唯一区是在算当中生溢出BINARY_INTENER型的量会被自指派一个NUMBER型而不会出PLS_INTEGER型的量将会错误

      字符,包括CHARVARCHAR2(VARCHAR)LONGNCHARNVARCHAR2种类型。

      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的可字符串。

      NCHARNVARCHAR2,国家字符集,与NLS指定的言集密切相,使用方法和CHARVARCHAR2相同。

      行,包括RAWLONG RAW种类型。用来存制数据,不会在字符集间转换

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

      LONG RAW似于LONG,作数据列最大存2G的数据,作为变量最大32760

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

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

      布,只有一种类--BOOLEAN仅仅可以表示TRUEFALSE或者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是一种标型的型声明。引用也必量。表和数不同,表有两列,KEYVALUEKEY就是定义时声明的BINARY_INTENERVALUE就是定义时声明的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模式下的常数据库应用所需了,后说实话,我玩了5ORACLE,都很少用到。

  • 相关阅读:
    mac安装完anaconda后,环境变量设置
    axios如何发送Basic Auth
    Django自带认证系统邮件模板自定义
    Ajax与Flask传值的跨域问题
    一道XXE漏洞和SSRF结合的题目
    如何分多次Pull requests
    如何使用C#写个多简单文档编辑器
    如何用Tkinter写个计算器
    LCTF2017学到的姿势
    Python 学习之路
  • 原文地址:https://www.cnblogs.com/andyjia/p/4949638.html
Copyright © 2011-2022 走看看