我想知道为什么Oracle在VARCHAR2
的定义中需要size参数。
我认为这是为了约束。像NUMBER
dataType一样,oracle将此参数作为可选参数是不是更好的选择?
我经常在调整旧表的大小时遇到问题,因为有时一个值比VARCHAR2
列的大小定义要大。
这与定义VARCHAR2(10
或VARCHAR2(1000)
的类型是一样的。
我想,这是一个不必要的约束。如果没有,你知道这个约束产生了有用的结果的真实案例吗?为什么在NUMBER
类型中没有这样的声明?
发布于 2010-02-11 11:57:48
为什么不让每个数据库表中的每一列都是CLOB?这样你就不必担心最大长度了。
但是,说真的:
数据类型长度约束存在的原因与任何约束相同:它们通过确保表中成功存储的任何数据都符合您定义的约束,减少了在所有应用程序代码中散布的错误检查量。
发布于 2010-02-11 13:24:36
从提取信息的角度来看,知道字段有多大是非常有用的。例如,如果您必须在信封上打印地址或将其显示在屏幕上,则需要知道字段必须有多大。
或者买很大的信封。
发布于 2016-01-18 21:44:54
这可能会影响性能:在MySQL中,temporary tables
和MEMORY tables
将VARCHAR
列存储为固定长度的列,并填充到其最大长度。
如果您设计的VARCHAR
列比所需的最大大小大得多,那么您将消耗更多的内存。这会影响cache efficiency, sorting speed, etc
。
所以你给出了字符串下的最大长度。比如,如果你的最大字符长度是10,所以不要给出他的长度是100或者更多。
https://stackoverflow.com/questions/2241238
复制相似问题