MySQL中的CHAR
和VARCHAR
类型都用于存储字符串(即文本),但它们的存储方式不同。
它们都接受一个整数作为输入,特别是从 0
到 255
。存储一个字符需要一个字节。
因此,CHAR(10)
意味着每个列条目的长度不能超过 10 个字符。
CHAR
存储CHAR格式数据所需的内存空间是固定的。继续我们的例子,假设我们使用CHAR(10)
作为我们的数据类型:
CHAR(10)
现在,假设我们添加“bob”
作为条目,该条目只有 3 个字符长。有趣的是,这条数据实际上在我们的数据库中存储为“bob “
(即7个尾随空格)。
这意味着即使技术上我们只存储 3 个字符,我们仍然使用 10 个字节。但是,当我们检索此数据时,MySQL 将删除幕后的尾随空格,因此您不必担心!
VARCHAR
VARCHAR和CHAR最大的区别是内存空间不固定。假设我们将数据类型设置为VARCHAR(10)
:
VARCHAR(10)
与 CHAR(10)
类似,我们不能存储超过 10 个字符的字符串。
现在,假设我们存储字符串 “bob”
。与 CHAR(10)
不同,MySQL 不添加任何尾随空格,这在我们节省大量内存空间的意义上非常有用。然而,这里需要注意的是,VARCHAR
每个数据需要 1 字节或 2 字节的额外存储空间。更具体地说,它们存储在前面(即前缀)。
注意
前缀用于指示数据中的字节数。每个字节都可以用来表示VARCHAR(10)
来说,所需的前缀仅占用 1 个字节,但例如 VARCHAR(400)
,前缀将占用 2 个字节。 字符。因此,对于
值 |
字符(4) |
需要存储 |
VARCHAR(4) |
需要存储 |
---|---|---|---|---|
'' |
'' |
4字节 |
'' |
1字节 |
'ab' |
'ab' |
4字节 |
'ab' |
3字节 |
'abcd' |
'abcd' |
4字节 |
'abcd' |
5字节 |
'abcdefgh' |
'abcd' |
4字节 |
'abcd' |
5字节 |
相关用法
- MySQL CHARACTER_LENGTH()用法及代码示例
- MySQL CHAR_LENGTH()用法及代码示例
- MySQL CHAR_LENGTH方法用法及代码示例
- MySQL CHARACTER_LENGTH方法用法及代码示例
- MySQL CHAR方法用法及代码示例
- MySQL CURTIME()用法及代码示例
- MySQL Convert()用法及代码示例
- MySQL CONCAT()用法及代码示例
- MySQL CEIL方法用法及代码示例
- MySQL CEILING()用法及代码示例
- MySQL CONCAT方法用法及代码示例
- MySQL CURRENT_TIME()用法及代码示例
- MySQL CONV( )用法及代码示例
- MySQL CONVERT_TZ方法用法及代码示例
- MySQL COUNT()用法及代码示例
- MySQL CONVERT_TZ()用法及代码示例
- MySQL CONCAT_WS方法用法及代码示例
- MySQL CURDATE方法用法及代码示例
- MySQL CONVERT( )用法及代码示例
- MySQL COT()用法及代码示例
- MySQL CURRENT_TIME方法用法及代码示例
- MySQL COMPRESS( )用法及代码示例
- MySQL Count()用法及代码示例
- MySQL CONNECTION_ID( )用法及代码示例
- MySQL CURTIME方法用法及代码示例
注:本文由纯净天空筛选整理自Arthur Yanagisawa大神的英文原创作品 MySQL | CHAR and VARCHAR。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。