MySQL VARCHAR17 Mar 2025 | 4 分钟阅读 MySQL中的VARCHAR是一种数据类型,用于存储长度最多为65535个字符的文本。表中的varchar列是可变长度字符串,可以包含数字、字符或两者兼有。在5.0.3版本之前,此数据类型只能存储255个字符,但在此版本及之后的版本中,它可以存储多达65535个字符。它可以存储在MySQL中,作为1字节或2字节的长度前缀加上实际大小。 长度前缀指定了字符串值的字节长度,而不是我们设置的最大大小。如果值不需要超过255字节,则该列使用一个字节的长度前缀。如果值需要超过255字节,则该列使用两个字节的长度前缀。 VARCHAR在MySQL中的最大长度受限于最大行大小65,535字节,该大小由除TEXT/BLOB列和使用的字符集之外的所有列共享。这意味着总列不应超过65535字节。 让我们借助一个例子来理解它。 我们将创建两个表,分别命名为Test1和Test2。这两个表都包含名为T1和T2的两个列。执行以下语句来创建表“Test1” 上面的语句成功创建了一个表,因为列长度T1 = 32765 + 2字节,T2 = 32766 + 2字节,合计等于65535(32765+2+32766+2)。因此,列长度满足varchar的最大行大小65535。 ![]() 现在,我们将看看当列大小超过varchar的最大大小65535时会发生什么。执行下面的语句,我们将T1列的大小增加以创建表Test2 执行上述语句后,MySQL会产生错误。这意味着最大行大小不能超过65,535字节。在任何情况下,如果它增加了,语句就会失败,MySQL会生成一个错误。 ![]() 在另一种情况下,假设我们使用以下语句创建了一个名为Test3的表 接下来,使用以下语句将值插入表中 现在,执行上述语句。MySQL会给出错误消息:Data is too long for column 'Name' at row 1(第1行,列‘Name’的数据太长)。输出更清楚地解释了这一点。 ![]() MySQL VARCHAR 和空格MySQL在存储varchar值时不会用空格填充。MySQL在存储或检索varchar值时也会保留尾随空格。我们可以通过下面的例子来理解这一点,其中一个INSERT语句向Test3表中的Name列添加值 接下来,执行SELECT语句检索值。 它将给出以下输出,其中MySQL在计算长度时包括了尾随空格,因为它没有增加列的长度。 ![]() 但是,当我们尝试插入一个带有尾随空格且超出列长度的varchar值时,MySQL会截断尾随空格。MySQL还会发出一个警告。下面的例子更清楚地解释了这一点 上面的语句插入了一个长度为六的值到name列。该值仍然插入到列中,但MySQL在添加值之前截断了尾随空格。我们可以使用下面的查询进行验证,我们可以看到insert语句已成功添加,但出现了一个警告,内容为:Data truncated for column 'name' at row 1(第1行,列‘name’的数据被截断)。 ![]() Char和Varchar数据类型之间的区别char和varchar数据类型都遵循ASCII字符。它们几乎相同,但在从数据库存储和检索数据方面有所不同。下表总结了char和varchar数据类型之间的主要区别
下一主题MySQL enum |
我们请求您订阅我们的新闻通讯以获取最新更新。