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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
