我们知道varchar是一个可变长度数据类型,那么mysql中varchar(3)和varchar(300)的区别是什么?
答案 0 :(得分:3)
在SQL varchar
中是一个长度不一的字符串。传统上,您为此字符串指定上限。以下是有关varchar
的一些事项:
INSERT
记录时以及尝试UPDATE
记录时,整个记录都会被拒绝。varchar
没有长度),并使用CHECK CONSTRAINT
来限制它。对您的问题的简短回答是varchar(3)
和varchar(300)
都是有限长度的字符串,并且两者都允许更短的字符串而不会受到惩罚。然而,显然一个很多比另一个短。
答案 1 :(得分:1)
除了@Manngo's answer之外,varchar(300)
还有一个额外字节的开销,而不是varchar(3)
,因为它的最大值超过了255.来自the MySQL docs ...
与CHAR相比,VARCHAR值存储为1字节或2字节长度前缀加数据。长度前缀表示值中的字节数。如果值不超过255个字节,则列使用一个长度字节;如果值可能需要超过255个字节,则列使用两个长度字节。
基本上,必须存储字符串的长度。 1个字节只能容纳0到255,因此需要2个字节来存储最长可达300的长度。
假设我想在我的列中插入单个字符,那么两者之间有什么区别?为什么我们使用varchar(1)为什么不使用varchar(100)??
如果列只应存储单个字符,请使用char(1)
一个字节,以确保数据的完整性(varchar(1)
为两个字节)。这样可以确保使用该列的任何人都能获得他们期望的结果并且不必进行自己的数据验证。
由于varchar
的大小只是一个最大值,因此指定较小的一个不会使该表使用任何较少的磁盘(除了上面提到的大约> 255)。避免向列中添加任意限制和业务规则。例如,如果您要存储网址或电子邮件地址,则没有理由不允许varchar(255)
。基于业务规则和UX问题的限制应该在更高层进行,而不受数据库模式的限制。