网站首页 > 技术文章 正文
前言
相信绝大多数小伙伴都知道在mysql中,字符串使用varchar和char来定义,但结合阿海自身的经历,发现大家一般都是使用varchar来定义字符串的,char类型的出场率似乎不高,但事物存在必然有其原因,今天阿海就给大家分享一下mysql中varchar和char之间的区别。
varchar和char的各自特性和区别
我们可以从以下三个方面入手,对二者的特性和区别进行一定的了解:
1.从长度是否可变来看,char 是一个固定长度的字符串,而varchar 是一个可变长度的字符串,假设声明一个 char(10)的长度如果存储字符串“abc”,虽然实际字符长度只有 3,但是 char 还是会占 10 个字节长度。同样,如果用 varchar 存储,那它只会使用 3 个字符的实际长度来存储;
2.从存储的效率高低来看,char 类型每次修改以后存储空间的长度不变,所以效率更高,varchar每次修改数据都需要更新存储空间长度,效率相对较低;
3.从占用的存储空间大小来看,char 不管实际数据大小,存储空间是固定的,而 varchar存储空间等于实际数据长度,所以varchar实际存储,空间的使用要比 char 更小。
结论
从以上分析可知,我们可以得出以下结论:
1.char类型更适合存储比较短的且是固定长度的字符串,比如身份证号码(18位),手机号码(11位);
2.varchar则适合存储可变长度的字符串,比如在定义产品简介字段时,我们可以将其长度给大些,留给冗余(避免实际生产环境该字段值超过定义长度,报error case),而不用担心其会占用过多存储空间。
好了,这次就分享到这里,大家如果有任何工作,面试上的问题或疑惑,欢迎私信阿海!
猜你喜欢
- 2025-07-02 「嵌入式秘术」相约榨干SysTick的每一滴汁水
- 2025-07-02 WIDECHAR函数教程(widechar函数没有为什么)
- 2025-07-02 计算机二级考试(计算机二级考试费用)
- 2025-07-02 Mysql中int(10)和char(10)以及varchar(10)区别
- 2025-07-02 MySQL选择合适的数据类型(char与varchar|text与blob)
- 2025-07-02 在 WinCC 中如何显示和操作 S7-300/400 中的 CHAR 和 STRING 类型的数据
- 2025-07-02 在 WinCC 中操作 S7-1200/1500 中的 CHAR 和 STRING 类型的数据
- 2025-07-02 to_char()、to_date()的区别(to_date和to_timestamp)
- 2025-07-02 30.MySQL中char和varchar的比较(mysql varchar和nvarchar)
- 2025-07-02 8、char为什么能存贮一个汉字?(char为什么能存储汉字)
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 511℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 487℃MySQL service启动脚本浅析(r12笔记第59天)
- 467℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 465℃启用MySQL查询缓存(mysql8.0查询缓存)
- 445℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 424℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 421℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)