MySQL数据库中的字段类型varchar和char的主要区别是什么?哪种字段的查找效率要高,为什么?

Posted JIANGJIZE1999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据库中的字段类型varchar和char的主要区别是什么?哪种字段的查找效率要高,为什么?相关的知识,希望对你有一定的参考价值。

mysql数据库中的字段类型varchar和char的主要区别是什么?哪种字段的查找效率要高,为什么?

区别一,定长和变长
char 表示定长,长度固定,varchar表示变长,即长度可变,当所插入的字符串超出它们的长度时,视情况来处理,如果是严格模式,则会拒绝插入并提示错误信息,如果是宽松模式,则会截取然后插入。如果插入的字符串长度小于定义长度时,则会以不同的方式来处理,如char(10),表示存储的是10个字符,无论你插入的是多少,都是10个,如果少于10个,则用空格填满。而varchar(10),小于10个的话,则插入多少个字符就存多少个。varchar怎么知道所存储字符串的长度呢?实际上,对于varchar 字段来说,需要使用一个(如果字符串长度小于255)或两个字节(长度大于255)来存储字符串的长度。
区别之二
存储的容量不同对char来说,最多能存放的字符个数 255,和编码无关。
而varchar呢,最多能存放 65532 个字符。
VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532 字节,最大有效长度是 65532 字节,在varchar存字符串的时候,第一个字节是空的,不存任何的数据,然后还需要两个字节来存放字符串的长度。所以有效长度就是 65535 - 1 - 2= 65532

由字符集来确定,字符集分单字节和多字节

Latin1一个字符占一个字节,最多能存放 65532个字符
GBK 一个字符占两个字节, 最多能存 32766 个字符 UTF8一个字符占三个字节, 最多能存 21844 个字符注意,char和varchar 后面的长度表示的是字符的个数,而不是字节数。
两相比较,char的效率高,没有碎片,尤其更新比较频繁的时候,方便数据文件指针的操作。但不够灵活,在实际使用时,应根据实际需求来选用合适的数据类型。

在这里插入图片描述

给孩子点个关注,点个赞吧,thanks,thanks,thanks

以上是关于MySQL数据库中的字段类型varchar和char的主要区别是什么?哪种字段的查找效率要高,为什么?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL表中的密码字段类型问题

MySQL字段类型都是啥意思?

MySQL数据库中的字段类型varchar和char的主要区别是什么,sql语句的安全性问题,一些sql数据库的面试问题

MySQL数据库中的字段类型varchar和char的主要区别是什么,sql语句的安全性问题,一些sql数据库的面试问题

关于MySQL中的varchar类型的研究

<转> MySQL中采用类型varchar(20)和varchar(255)对性能上的影响