【问题标题】:Why does MySQL allow VARCHAR(255) to have larger numbers为什么 MySQL 允许 VARCHAR(255) 有更大的数字
【发布时间】:2014-06-09 15:38:46
【问题描述】:

当我第一次了解 MySQL 中的字段类型时,我会将任何不是数字的内容定义为 VARCHAR,并将长度设置为任何内容。 500 2000,但我说的最大值实际上是 255 对吗?

如果是这样,为什么 MySQL 让我定义长度更大的列,它实际上在做什么?它会允许更大的长度吗?它是否将列/字段定义为其他内容?

欢迎任何建议。

【问题讨论】:

  • VARCHAR 列中的值是可变长度字符串。在 MySQL 5.0.3 之前可以将长度指定为 0 到 255 之间的值,在 5.0.3 及更高版本中可以指定为 0 到 65,535

标签: php mysql


【解决方案1】:

此行为在 5.0.3 后更改:

VARCHAR 列中的值是可变长度字符串。 长度可以 在 MySQL 5.0.3 之前被指定为 0 到 255 之间的值,以及 0 到 5.0.3 及更高版本中为 65,535。 MySQL 5.0.3 及更高版本中的 VARCHAR 受最大行大小限制 (65,535 字节,所有列共享)和字符 设置使用。

来自The CHAR and VARCHAR Types 文档参考。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      5.0.3之前是255,but now

          Values in VARCHAR columns are variable-length strings. The length can be
       specified as a value from 0 to 65,535.
      

      The documentation of 5.0.x 显示过渡:

      Values in VARCHAR columns are variable-length strings. The length can be
      specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535
      in 5.0.3 and later versions.
      

      参考:What is the maximum range of varchar in MySQL?

      【讨论】:

        【解决方案4】:

        varchar(n) 的 n 最大为 255 和大于 255 的值之间存在差异。

        MySQL 通过在前一个或两个字节中编码字符串的长度来存储可变长度的字符串。对于小于 256 的值,MySQL 使用一个字节的开销作为长度。对于 n 为 256 或更大的值,MySQL 使用两个字节的开销作为长度。

        请注意,这是基于列的定义,而不是内容。因此,一个空字符串 ('') 可以占用 1 个字节作为 varchar(255) 和 2 个字节作为 varchar(256)(不计算用于存储 NULL 标志的空间)。

        要刷新您的成员,一个字节可以存储从 0 到 255 的整数,两个字节可以存储从 0 到 65,535 的整数。这就是这些限制的来源。

        【讨论】:

          【解决方案5】:

          MySQL解释,点击link了解详情。

          VARCHAR(255) 列可以保存最大长度为 255 个字符的字符串。假设该列使用 latin1 字符集(每个字符一个字节),实际需要的存储是字符串的长度(L),加上一个字节来记录字符串的长度。对于字符串“abcd”,L 为 4,存储要求为 5 个字节。如果同一列改为使用 ucs2 双字节字符集,则存储要求为 10 个字节:'abcd' 的长度为 8 个字节,该列需要两个字节来存储长度,因为最大长度大于 255 (最多 510 个字节)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-11-18
            • 1970-01-01
            • 2011-01-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多