写点什么

【MySQL 字符串数据类型优化】char 和 varchar 的区别

  • 2022 年 6 月 09 日
  • 本文字数:678 字

    阅读完需:约 2 分钟

【MySQL字符串数据类型优化】char和varchar的区别

前言

学习过 MySQL 数据库的友友们肯定对char和varchar这两个字符串数据类型并不陌生,那么这两个类型的区别、细节和使用场景你清楚吗?



char 与 varchar 对比

  • char(size),固定长度字符串,最大 255 字符。

  • varchar(size),可变长度字符串,最大==65535 字节==(注意这里是字节,在不同的编码规则中字符占用的字节是不相同的),若没定义表的编码则默认为utf8【utf8 编码最大 21844 字符;gdk 编码最大为 32766 字符】

  • (注意字符而非字节)

  • char 分配固定字符,char(4)占用四个字符,存入一个字符,也会在内存中占用四个字符空间。

  • varchar按实际使用分配空间,还需使用 1-3 个字节来记录存放内容长度,总占用 = L(实际数据大小)+(1-3)个字节.

代码样例

CREATE TABLE t4(  `name` CHAR(255));#创建一个表t4,定义name的长度为255字符INSERT INTO t4 VALUES('ABCD');INSERT INTO t4 VALUES('我是你D');#给表中添加英文、中文都可以CREATE TABLE t5(  `name` VARCHAR(32766)) CHARSET gbk;#定义编码为gdk,最大长度为32766字符,因为gbk中文占2个字节,英文占1个字节CREATE TABLE t6(  `name` VARCHAR(21844));  #定义编码为默认utf8,最大长度为21844字符,因为utf-8中文占3个字节,英文占1个字节
复制代码

char 与 varchar 的使用细节

  1. char(4),这个 4 表示字符数,非字节数,无论中文还是字母都是四个(占用字符空间固定)。

  2. varchar(4),这个 4 也表示字符数,但是这里存放的字母或者中文是按照定义表时的编码来计算(占用字符空间不固定)。

char 和 varchar 的使用情景

  1. 数据定长,推荐char。例如 md5 密码(固定 32 为)、邮编、手机号、身份证号等。2. 长度不确定,使用varchar。例如留言、文章等。

发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2022.06.02 加入

喜欢Java和py,会更新自己在学习过程中遇到**比较重要的知识点**以及**自己遇见的问题与解决方法**哦,如果你也正在学Java,就请留下一个关注吧

评论

发布
暂无评论
【MySQL字符串数据类型优化】char和varchar的区别_数据库_写代码两年半_InfoQ写作社区