【MySQL字符串数据类型优化】char和varchar的这些细节你们都清楚吗?

本文详细介绍了MySQL数据库中char和varchar两种字符串数据类型的差异。char是固定长度的,如char(4)不论存储什么内容都会占用4个字符空间,而varchar则是可变长度,根据实际内容占用空间,并额外存储长度信息。适合存储定长数据如密码、邮编时选用char,对于长度不定的数据如文章、留言则推荐使用varchar。
摘要由CSDN通过智能技术生成


前言

学习过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。例如留言、文章等。
  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码两年半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值