zoukankan      html  css  js  c++  java
  • oracle 10g 数据类型占用字节介绍

    这篇文章的主要目的是分析建设系统所用的存储空间,避免对存储设备的过渡浪费,节省投资。同时也提高对oracle常用数据类型的认识。

    介绍的类型如下:
    ·char
    ·varchar
    ·varchar2
    ·nvarchar
    ·nvarchar2
    ·number
    ·date

    char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以 补足二十个字节;char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字;char适 用于长度比较固定的,一般不含中文的情况;CHAR的效率比VARCHAR2的效率稍高。

    目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle自己开发了一个数据类型 VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼 容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。

    varchar和varchar2是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节。中文占两个字节。

    varchar和varchar2最多存储4000字节。

    nvarchar和nvarchar2是长度不固定的;nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20 个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数;nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存 的英文字母也占两个字节;nvarchar/nvarchar2适用于存放中文。

    NUMBER最多占用22个字节,最大可以保存38个十进制位。
    Number默认情况下,精度为38位,取值范围1~38之间。它实际上是磁盘上的一个变长类型,会占用0~22 字节的存储空间。 但定义的一个Number型字段到底要占用多少字节呢?从网上找到了如下公式。
    其实有公式可以计算:
    number(p,s)占用得空间为: 
    length = floor((p+1)/2) + 1    
    备注:如果该数值为负数,需要再加一个字节。
    ----------------
    例如:NUMBER(14,4)的类型数值,存储空间为
    select floor((14+1)/2) + 1 from dual 
    结果输出为:8

    DATE类型在oracle10g中占用7个字节。

    在粗略估计一张表每条记录占用多少空间时,可以参考上述的规则,查询数据字典也是一种途径。

    SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME='';

    在查询结果中,有一列叫DATA_LENGTH,记录了占用最大字节数。

  • 相关阅读:
    选择主要的构建实践方法(转) Tech
    201671010109 201620172《java程序设计》第一周感想
    201671010109 201720162第二周学习感想
    2016710101090 20162017《java程序设计》第三周感想
    sort k 详解
    java.util.NoSuchElementException: None.get的解决方法
    Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace 解决方法
    Java学习随笔之1: Java 语言概述和开发环境
    java 学习随笔之2:理解面向对象
    Selenium Basic Knowledge
  • 原文地址:https://www.cnblogs.com/lidabo/p/2874712.html
Copyright © 2011-2022 走看看