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

本文详细介绍了Oracle数据库中常用的几种数据类型,包括char、varchar、varchar2、nvarchar、nvarchar2、number和date。针对每种类型的特点、适用场景及存储方式进行了深入解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值