【MySQL实践】不同字符类型,占用 char(1) 和 varchar(1) 空间实验

我是一名立志把细节都说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持


创建测试表

MySQL版本:8.0
数据库名称: test
数据库引擎: InnoDB
字符集:utf8mb4_0900_ai_ci

字段:

字段名称 字段类型
test_char char(1)
test_varchar varchar(1)

执行测试SQL

  • char 类型字段,插入10条测试记录。
  • 成功 5 条,失败 5 条。
# char(1)
insert into test(test_char) values('张'); # 成功
insert into test(test_char) values('张三'); # 失败
insert into test(test_char) values('a'); # 成功
insert into test(test_char) values('ab'); # 失败
insert into test(test_char) values('1'); # 成功
insert into test(test_char) values('12'); # 失败
insert into test(test_char) values(','); # 成功
insert into test(test_char) values(',,'); # 失败
insert into test(test_char) values(','); # 成功
insert into test(test_char) values(',,'); # 失败
  • varchar 类型字段,插入10条测试记录。
  • 成功 5 条,失败 5 条。
# varchar(1)
insert into test(test_varchar) values('张'); # 成功
insert into test(test_varchar) values('张三'); # 失败
insert into test(test_varchar) values('a'); # 成功
insert into test(test_varchar) values('ab'); # 失败
insert into test(test_varchar) values('1'); # 成功
insert into test(test_varchar) values('12'); # 失败
insert into test(test_varchar) values(','); # 成功
insert into test(test_varchar) values(',,'); # 失败
insert into test(test_varchar) values(','); # 成功
insert into test(test_varchar) values(',,'); # 失败

查询表中结果:

在这里插入图片描述


实践总结

  • 1 个单位的 char / varchar 类型存储空间,只能存储一个字符。
    • 这一个字符,不限定存储的字符类型,即:不限是数字、中文、英文、中文字符、英文字符,只要是一个,就占一个单位。
  • varchar 类型虽然是用于存储可变长度的字符串的数据类型,但是也受设置的最大限制长度约束。

拓展:计算机存储单位进制

1TB(太字节) = 1024GB(吉字节)
1GB(吉字节) = 1024MB(兆字节)
1MB(兆字节) = 1024KB(千字节)
1KB(千字节) = 1024B(字节)
1B(字节,byte,简写:B) = 8b(位,bit,简写:b)

位(bit,简写:b):二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。
字节(Byte,简写:B):计算机中数据的基本单位,每8位组成一个字节。

我们MySQL这里的1个字符 ( 1 character,表现为char(1)或varchar(1)),具体转换为多少字节,受使用的不同 字符集 影响。

latin1 :5单字符最大占 1个字节。
gbk :单字符最大可占用 2个字节。
utf8 :单字符最大可占用 3个字节。
ut8mb4:单字符最大占 4个字节。

所以我们这里1字符最大占4字节。


我是一名立志把细节都说清楚的博主,欢迎【关注】🎉 ~
原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~
如有错误、疑惑 ,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持


插入失败记录截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


我是一名立志把细节都说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑 ,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持

相关推荐

  1. mysqlCHARVARCHAR类型

    2024-04-30 14:32:03       72 阅读
  2. mysqlcharvarchar的区别

    2024-04-30 14:32:03       52 阅读
  3. MySQLvarchar char的区别

    2024-04-30 14:32:03       52 阅读
  4. SQL中字符串类型charvarchar之间的区别是什么

    2024-04-30 14:32:03       25 阅读
  5. Mysqlchar varchar的的区别

    2024-04-30 14:32:03       33 阅读
  6. MySQLCharVarChar详解

    2024-04-30 14:32:03       59 阅读
  7. mysql charvarchar 的区别

    2024-04-30 14:32:03       38 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-30 14:32:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-30 14:32:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-30 14:32:03       87 阅读
  4. Python语言-面向对象

    2024-04-30 14:32:03       96 阅读

热门阅读

  1. 人脸识别系统

    2024-04-30 14:32:03       34 阅读
  2. 模型剪枝——RETHINKING THE VALUE OF NETWORK PRUNING

    2024-04-30 14:32:03       160 阅读
  3. R可视化:Venn图进阶版本

    2024-04-30 14:32:03       29 阅读
  4. ES6要点

    ES6要点

    2024-04-30 14:32:03      34 阅读
  5. 用于网络唤醒(Wake-on-LAN)和远程关机的方法

    2024-04-30 14:32:03       147 阅读
  6. MySQL随便聊----之SQL的简单了解

    2024-04-30 14:32:03       132 阅读
  7. 深入理解堆机制:C语言中的数据结构基础

    2024-04-30 14:32:03       39 阅读