为什么我们总是需要指定 VARCHAR(length)而不仅仅是 VARCHAR? 它是动态的。
VARCHAR(length)
VARCHAR
UPD: 我特别困惑的是它是强制性的(例如在 MySQL 中)。
首先,在所有数据库中都不需要它,看看 SQL Server,它是可选的。
不管怎样,它定义了字段内容的最大大小。这本身并不是一件坏事,而且它传达了意义(例如,电话号码,在这个领域你不想要国际号码)。
来自 维基百科:
Varchar 油田可以是任何规模的 极限。极限与 类型的数据库,一个 Oracle 9i 数据库的字节数限制为4000字节 MySQL 数据库的限制是65,535 字节(对于整个行)和 Microsoft SQL Server 20058000字节 (除非使用 varchar (max) 最大存储容量为 2,147,483,648字节)。
VARCHAR 的“长度”不是内容的长度,而是内容的最大长度。
VARCHAR 的最大长度不是动态的,它是固定的,因此必须指定。
如果不想为它定义最大大小,那么可以使用 VARCHAR (MAX)。
数据库对其存储的数据了解得越多,它在使用请求搜索/添加/更新数据时就能进行越多的优化。
答案是你 不要需要,它是可选的。
如果您想确保字符串不超过一定的长度,那么它就在那里。
您可以将其视为对数据的约束。它确保不存储违反约束的数据。它在概念上类似于对整数列的检查约束,确保只输入正值。
正如@DimaFomin 在评论中指出的那样,对于程序员来说,最危险的事情是强制使用 默认长度,如果没有指定长度的话。
SQLServer 如何强制执行默认长度:
declare @v varchar = '123' select @v
结果:
1