手机网站源码下载,广东网站推广公司,有哪些做包装设计网站好些,阿里云建站文章搜索文章目录 1.区别1.1 存储方式不同1.2 最大长度不同1.3 尾随空格处理方式不同1.4 读写效率不同 2.小结参考文献 在 MySQL 中#xff0c;CHAR 和 VARCHAR 是两种不同的文本数据类型#xff0c;CHAR 和 VARCHAR 类型声明时需要指定一个长度#xff0c;该长度指示您希望存储的最… 文章目录 1.区别1.1 存储方式不同1.2 最大长度不同1.3 尾随空格处理方式不同1.4 读写效率不同 2.小结参考文献 在 MySQL 中CHAR 和 VARCHAR 是两种不同的文本数据类型CHAR 和 VARCHAR 类型声明时需要指定一个长度该长度指示您希望存储的最大字符数。例如CHAR(30) 最多可以容纳 30 个字符。 它们虽然相似但存在一些重要区别。
1.区别
根据 MySQL 的官方文档 The CHAR and VARCHAR Types 中的描述, varchar和char的区别主要有
1.1 存储方式不同
char(N) 定长存储。最多存储 N 个字符字符数没超出则用空格填充超过就会被截断超过的部分丢弃。如果是严格模式则会拒绝插入并提示错误信息
varchar(N) 变长存储。最多存储 N 个字符没超出则有几个存储几个超过就会被截断超过的部分丢弃。如果是严格模式则会拒绝插入并提示错误信息
此外VARCHAR 在数据前存储为1字节或2字节的长度。长度前缀表示值中包含的字节数。如果值需要不超过255个字节则列使用一个字节如果值需要超过255个字节则使用两个字节。
下表通过显示将各种字符串值存储到 CHAR(4) 和 VARCHAR(4) 列中的结果来说明 CHAR 和 VARCHAR 之间的区别(假设该列使用单字节字符集如 latin1)。
ValueCHAR(4)Storage RequiredVARCHAR(4)Storage Required‘’’ ’4 bytes‘’1 byte‘ab’ab ’4 bytes‘ab’3 bytes‘abcd’‘abcd’4 bytes‘abcd’5 bytes‘abcdefgh’‘abcd’4 bytes‘abcd’5 bytes
表最后一行显示的值仅在不使用严格 SQL 模式时才适用如果启用严格模式则不会存储超过列长度的值并导致错误。
1.2 最大长度不同
char 最大长度为 255 个字符和字符编码无关。varchar 最大长度为 65,535 字节注意 varchar 最大长度是字节因为该上限为行的最大长度。
1.3 尾随空格处理方式不同
char 取出时会将尾随空格去掉而 varchar 不会。
例如 char(10)保存字符串hello 末尾有一个空格存到数据库就是hello “有5个空格然后查询出来只是hello”没有空格占10个字节。
varchar(10)保存字符串hello 有一个空格存到数据库就是hello 有1个空格查询出来也是hello 有1个空格占 6 个字节。
1.4 读写效率不同
char 存取效率比 varchar 要高因为其长度固定数据库系统可以更容易地计算位置和长度。但这也意味着占用更多的磁盘空间可谓是以空间换时间。
而 varchar 则刚好相反节省空间但存取效率相对较低。
2.小结
如果你需要固定长度的数据一般是在存储数据长度差异不大的时候使用 CHAR但要注意它会浪费存储空间。如果你需要更有效地使用存储空间或处理可变长度的数据可以使用 VARCHAR。
通常大部分情况下VARCHAR更为常见因为它更节省空间。 参考文献
11.3.2 The CHAR and VARCHAR Types - mysql.com Section 5.1.11 Server SQL Modes MySQL中char与varchar的区别存储机制、性能差异