oracle 10g 数据类型占用字节介绍

简介: 这篇文章的主要目的是分析建设系统所用的存储空间,避免对存储设备的过渡浪费,节省投资。同时也提高对oracle常用数据类型的认识。介绍的类型如下:·char·varchar·varchar2·nvarchar·nvarchar2·number·datechar的长度是固定的,比如说,你定义了cha...

这篇文章的主要目的是分析建设系统所用的存储空间,避免对存储设备的过渡浪费,节省投资。同时也提高对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,记录了占用最大字节数。

目录
相关文章
|
Oracle 关系型数据库 数据库
|
Oracle 关系型数据库 数据库
❤️Docker中只需2步即可拥有Oracle 10G环境,史上最快部署❤️
❤️Docker中只需2步即可拥有Oracle 10G环境,史上最快部署❤️
958 1
❤️Docker中只需2步即可拥有Oracle 10G环境,史上最快部署❤️
|
SQL Oracle 关系型数据库
Oracle 10g与Oracle 11g之间的导入与导出
Oracle 10g与Oracle 11g之间的导入与导出
|
存储 Oracle 关系型数据库
Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步
Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步
|
Oracle 关系型数据库 C语言

推荐镜像

更多