Oracle12C--数据类型划分(二十七)

本文详细介绍了Oracle12C中的数据类型,包括标量类型如NUMBER、BINARY_INTEGER、PLS_INTEGER、BINARY_FLOAT、BINARY_DOUBLE,字符型如CHAR、VARCHAR2、NCHAR、NVARCHAR2,日期型如DATE、TIMESTAMP,以及其他特殊类型如ROWID、LONG、LONG RAW。文章还讲解了各类型的特点、使用场景和示例。
摘要由CSDN通过智能技术生成

知识点的梳理:

  • Oracle中的varchar2与其他数据库的varchar完全一样;
  • 使用UNICODE编码最大的方便之处是统一了字符与汉字的长度。这样在进行文字处理时会更加方便。但是,由于所有的字母都会按照十六进制保存,所以会存在浪费空间的问题

      

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

  • 数值型
    • NUMBER数据类型
      • 采用十进制类型,需将十进制转为二进制进行计算
        • 定义整型:NUMBER(n);
        • 定义浮点型数据:NUMBER(m,n)
      • 实例1:定义NUMBER变量

DECLARE

v_x NUMBER(3) ; -- 最多只能为3位数字

v_y NUMBER(5,2) ; -- 3位整数,2位小数

BEGIN

v_x := -500 ;

v_y := 999.88 ;

DBMS_OUTPUT.put_line('v_x = ' || v_x) ;

DBMS_OUTPUT.put_line('v_y = ' || v_y) ;

DBMS_OUTPUT.put_line('加法运算:' || (v_x + v_y)) ; -- 整数 + 浮点数 = 浮点数

END ;

/

效果:
v_x = -500

v_y = 999.88

加法运算:499.88

  • BINARY_INTEGERPLS_INTEGER
    • 说明:
      • 两者具有相同的范围长度。与NUMBER比较,占用的范围更小;
      • 采用二进制补码存储,运算性能比NUMBER高;
    • 两者区别:
      • BINARY_INTEGER操作的数据大于其数据范围时,会自动转换为NUMBER型进行保存;
      • PLS_INTEGER操作的数据大于范围时,会抛出异常信息
    • 示例1:验证PLS_INTEGER操作

DECLARE

v_pls1 PLS_INTEGER := 100 ;

v_pls2 PLS_INTEGER := 200 ;

v_result PLS_INTEGER ;

BEGIN

v_result := v_pls1 + v_pls2 ;

DBMS_OUTPUT.put_line('计算结果:' || v_result) ;

END ;

/

计算结果:300

  • BINARY_FLOATBINARY_DOUBLE
    • 两者比NUMBER节约空间,同时范围更大,采用二进制存储数据;
    • 示例1:验证BINARY_DOUBLE操作

DECLARE

v_float BINARY_FLOAT := 8909.51F ;

v_double BINARY_DOUBLE := 8909.51D ;

BEGIN

v_float := v_float + 1000.16 ;

v_double := v_double + 1000.16 ;

DBMS_OUTPUT.put_line('BINARY_FLOAT变量内容:' || v_float) ;

DBMS_OUTPUT.put_line('BINARY_DOUBLE变量内容:' || v_double) ;

END ;

/

计算结果:

BINARY_FLOAT变量内容:9.90966992E+003

BINARY_DOUBLE变量内容:9.9096700000000001E+003

  • 两者定义的常量:这些常量只能在PL/SQL中使用。这些常量分别表示BINARY_FLOATBINARY_DOUBLE的数据范围,同时针对非数字与超过其类型最大值的数据标记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值