为什么VARCHAR需要长度规格?

为什么我们总是需要指定
VARCHAR(length)
而不仅仅是
VARCHAR
?无论如何它是动态的。 UPD:我特别困惑的是它是强制性的(例如在MySQL中)。     
已邀请:
VARCHAR的“长度”不是内容的长度,而是内容的最大长度。 VARCHAR的最大长度不是动态的,它是固定的,因此必须指定。 如果您不想为其定义最大大小,请使用VARCHAR(MAX)。     
首先,它不需要在所有数据库中。查看SQL Server,它是可选的。 无论如何,它定义了字段内容的最大大小。这本身并不是坏事,它传达了意义(例如 - 电话号码,你不希望在这个领域有国际号码)。     
您可以将其视为数据的约束。它确保您不存储违反约束的数据。它在概念上类似于例如对整数列的检查约束,确保仅输入正值。     
可能性能
impact
:在MySQL中,
temporary tables
MEMORY tables
将一个
VARCHAR
列存储为固定长度列,填充到其最大长度。 如果你设计的
VARCHAR
列比你需要的最大尺寸大得多,那么你将消耗更多的内存。这会影响
cache efficiency, sorting speed
等。 所以你给出了你的字符串下面的最大长度。就像你最大字符10的长度所以不要给他的长度100或更多。     
数据库对存储的数据了解得越多,在使用请求搜索/添加/更新数据时可以进行的优化就越多。     
答案是你不需要,它是可选的。 如果你想确保字符串不超过一定长度,它就在那里。     
来自维基百科:   Varchar字段可以是任何大小的   到了极限。限制不同于   数据库类型,Oracle 9i   数据库的限制为4000字节,a   MySQL数据库的限制为65,535   字节(整个行)和   Microsoft SQL Server 2005 8000字节   (除非使用varchar(max),否则   最大存储容量为   2,147,483,648字节)。     

要回复问题请先登录注册