因此,使用VARCHAR2而不是VARCHAR的优势主要在于VARCHAR2在数据库中占用可变大小的空间,具体取决于其长度;当插入的列值为null时,这尤其有效,因为在这种情况下几乎不占用空间。因此,出于同样的原因,数字的数据类型是否以相同的方式运行,以便当插入的数字为null时,db中没有浪费空间?
答案 0 :(得分:4)
是,存在可变长度数字数据类型,称为NUMBER。
Oracle使用精度所需的最小空间(scale需要单个字节)分别存储精度(有效数字)和比例。
NUMBER(x,y)是NUMBER的子类型,它们以与常规NUMBER相同的方式存储,它们只有额外的约束。
AFAIK,没有相应的CHAR数字。
您可以看到Oracle如何使用DUMP函数在内部存储数据:
SQL> select dump(1), dump(12345), dump(123456789) from dual;
DUMP(1) DUMP(12345) DUMP(123456789)
------------------ ------------------------ ------------------------------
Typ=2 Len=2: 193,2 Typ=2 Len=4: 195,2,24,46 Typ=2 Len=6: 197,2,24,46,68,90
正如您所看到的,数据长度会精确增加。