MySQL数据类型char、varchar、text的比较

来源:互联网 发布:鹅妈妈童谣 知乎 编辑:程序博客网 时间:2024/05/16 12:37
char(n)定义的列的长度为固定的,长度为0~255之间。
当保存char值时,在它们的右边填充空格以达到指定的长度。
当检索到char值时,尾部的空格被删除掉。
注意:char最大长度是255字符,字符数和字符集没关系。

varchar(n)定义的列的长度为可变长的。
该类型在5.0以下的版本中的最大长度限制为255字节,
而在5.0及以上的版本中,varchar数据类型的长度支持到了65535字节(注意是字节而不是字符)。
(varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65532字节)。
同char对比,varchar值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。
注意:对于5.0以上的版本
1.一个汉字占多少长度与编码有关:
    UTF-8:一个汉字=3个字节
    GBK:一个汉字=2个字节
2.varchar(n)表示n个字符,无论汉字和英文,MySQL都能存入n个字符,仅是实际字节长度有所区别
若一个表只有一个varchar类型,如定义为:
create table test(test varchar(n)) charset=utf8;
则此处n的最大值为(65535-1-2)/3 = 21844。
减1的原因是实际行存储从第二个字节开始';
减2的原因是varchar头部的2个字节表示长度;
除3的原因是字符编码是utf8。

text和varchar基本相同。text会忽略指定的大小这和varchar有所不同,text不能有默认值。
text使用额外的2个字节来存储数据的大小,varchar根据存储数据的大小选择用几个字节来存储。
text的65535字节全部用来存储数据,varchar则会占用1-3个字节去存储数据大小。
TINYTEXT     256 bytes    
TEXT         65,535 bytes          ~64kb
MEDIUMTEXT   16,777,215 bytes      ~16MB
LONGTEXT     4,294,967,295 bytes  ~4GB

MyISAM tables in MySQL have a maximum size of a row of 65,535 bytes,
so all the data in a row must fit within that limit.
However, the TEXT types are stored outside the table itself and only contribute 9 to 12 bytes towards that limit.
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 涂了痔疮膏后怕粘到内裤怎么办 眼罩里面的蓝色液体干了怎么办 新买的饮水机有塑料味怎么办 白色衣服被洗衣液染荧光了怎么办 衣服碰到了酒店的毛巾被单怎么办 防晒喷雾弄衣服上有荧光怎么办 剑网3重置版删除后有残留怎么办 在超市买到变质的水果怎么办 微信官方电话一直打不通怎么办 对方欠货款股东换了不还怎么办 闲鱼买的东西确认收货有问题怎么办 不让微信好友看到吃鸡的名字怎么办 金鹰贵宾积分卡过期了怎么办 小宝机器人一直停在联网界面怎么办 手机版的有道云笔记忘记邮箱怎么办 钡灌肠复查钡剂排空不良怎么办 两个月宝宝灌肠后不排便怎么办 一岁宝宝肠套叠灌肠后拉肚子怎么办 苹果手机自带的天气没有了怎么办? 衣服在洗衣机里忘记拿出来怎么办 苹果se手机系统占内存太大怎么办 客人把饭店老板打了民警怎么办 商场嫌品牌低端不让入驻怎么办 带着孩子坐飞机座位不在一起怎么办 公司老板跑路了员工该怎么办 超市买的衣服防盗扣忘记取了怎么办 在超市买的衣服那个扣没取怎么办啊 超市散称商品条码老记不住怎么办 app账号密码忘记了怎么办注销难 幼儿老师遇到家长比较孩子该怎么办 发的微信公众号内容重复了怎么办 招嫖诈骗微信转账被骗怎么办 朋友在深圳龙岗被传销骗了要怎么办 怀疑家里人被传销组织骗去了怎么办 怀疑家人被骗进传销了该怎么办 b本扣3分了怎么办2018 抖音里面就剩人头的视频怎么办 自学参加普通高考那小高考怎么办 如果小学生长胸只长了一个该怎么办 脸上毛多导致的毛孔粗怎么办 吃了激素药头发掉的厉害怎么办