0

为什么我们分配大小(如字符串数据类型中的 char(20) 或 varchar(20) 而不是 SQL 中的 int 或 float 等数据类型)?

4

2 回答 2

2

数字类型是所谓的“固定大小”类型。无论您存储哪个值,该列的存储大小都不会改变。通过选择类型,您可以定义它的大小。Aninteger使用的空间比 a 少bigint

您还(隐式地)在列上定义一个约束,限制可以存储的最大值和最小值( abigint可以容纳比 a 更大的数字integer)。

字符类型的长度规范具有类似的目的:它定义了数据最大长度的约束。

对于char列,这也定义了存储大小,char固定长度数据类型也是如此(较短的值被填充到定义的长度)

对于所有(?)现代DBMS,可变字符(varchar)列的定义(最大)大小并没有真正改变它的存储方式。DBMS 只是确保您不能存储超过您指定的内容(类似于您不能存储超出整数列定义范围的数字的事实)。

DBMS可能会根据定义的最大大小应用一些内部(未记录的)优化,但这对于访问数据的系统来说是不“可见的”。

于 2012-11-18T11:05:26.510 回答
0

在 Oracle 中,如果我没记错的话,int 和 float 是 number(x,y) 定义的某种快捷方式。

于 2012-11-18T10:20:34.617 回答