为什么我们在字符串数据类型中分配大小(如char(20)或varchar(20)而不在SQL中为int或float等数据类型分配)?
答案 0 :(得分:2)
数字类型是所谓的“固定大小”类型。无论您存储哪个值,该列的存储大小都不会更改。通过选择类型,您可以定义它的大小。 integer
占用的空间少于bigint
。
您还(隐含地)在列上定义了一个限制可以存储的最大值和最小值的约束(bigint
可以包含比integer
更大的数字。
字符类型的长度规范具有类似的用途:它定义了数据最大长度应该是什么的约束。
对于char
列,这也定义了存储大小,因为char
也是固定长度的数据类型(较短的值填充到定义的长度)
对于所有(?)现代DBMS,变化字符(varchar
)列的已定义(最大)大小并未真正改变其存储方式。 DBMS只是确保您不能存储超过您指定的数量(类似于您不能存储超过整数列的定义范围的数字的事实)。
DBMS 可能应用一些内部(未记录的)优化,具体取决于定义的最大大小,但对于访问数据的系统来说,这不是“可见的”。
答案 1 :(得分:0)
在Oracle中,如果我没记错的话,int和float是数字(x,y)定义的某种快捷方式。