前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql数据类型char、varchar、text的一些区别

mysql数据类型char、varchar、text的一些区别

作者头像
吴裕超
发布2021-04-29 15:28:56
1.4K0
发布2021-04-29 15:28:56
举报
文章被收录于专栏:吴裕超

之前有一个需求,要求输入描述限制上限为5000字符。由于需要新设计表结构,所以我有了一个疑问,到底设计表的时候,字段类型如何才能更合理,不浪费存储空间,于是了解了一下比较常用的char、varchar、text的区别。

首先需要知道汉字和字节字符的关系,关系如下: 1、 1个汉字 = 1个字 = 1个字符 2、 1个字符 = 1个字节 = 8bit(ACSII码下) 3、 1个字符 = 2个字节 = 16bit(Unicode码下)

字符并不是计算机语言, 一般情况下,汉字一个字占两个字节。英文字母一个字母占一个字节。

我试了下char(2)和varchar(2), 都能存2个英文字母或者2个汉字, varchar(10) 既10个字符可以存10个汉字,不太明白这个n是表示字节还是字符,查了下资料:

1、char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。

2、同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。

3、超过char和varchar的n设置后,字符串会被截断。

4、char的上限为255字节,varchar的上限65535字节,text的上限为65535。

5、char在存储的时候会截断尾部的空格,varchar和text不会。

6、varchar会使用1-3个字节来存储长度,text不会。

我使用的mysql版本是14.14,括号中的数字指的是长度,char范围是0~255,varchar最长是64k。 char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char。 所以综上这个字段设计时候我写成了varchar(5000),虽然看起来比较奇怪,但是比text更合适一点。

参考:https://www.cnblogs.com/billyxp/p/3548540.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档