您现在的位置是:群英 > 数据库 > MySQL数据库
MySQL中varchar和char有何区别,哪个效率高?
Admin发表于 2021-12-06 18:00:111916 次浏览
  • MySQL中varchar和char有何区别?varchar和char都是都是用来存储字符串的,但是他们的保存方式有一定的区别,对此本文就给大家来讲讲,对大家了解varchar和char的使用有一定的帮助,感兴趣的朋友就继续往下看吧。

    区别一,定长和变长

  • char 表示定长,长度固定,varchar表示变长,即长度可变。当所插入的字符串超出它们的长度时,视情况来处理,如果是严格模式,则会拒绝插入并提示错误信息,如果是宽松模式,则会截取然后插入。如果插入的字符串长度小于定义长度时,则会以不同的方式来处理,如char(10),表示存储的是10个字符,无论你插入的是多少,都是10个,如果少于10个,则用空格填满。而varchar(10),小于10个的话,则插入多少个字符就存多少个。

  • varchar怎么知道所存储字符串的长度呢?实际上,对于varchar字段来说,需要使用一个(如果字符串长度小于255)或两个字节(长度大于255)来存储字符串的长度。 

  • 区别之二,存储的容量不同

  • 对 char 来说,最多能存放的字符个数 255,和编码无关。

  • 而 varchar 呢,最多能存放 65532 个字符。VARCHAR 的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节
     

  • 最大有效长度是 65532 字节,在 varchar 存字符串的时候,第一个字节是空的,不存任何的数据,然后还需要两个字节来存放字符串的长度。所以有效长度就是 65535 - 1 - 2= 65532

    由字符集来确定,字符集分单字节和多字节
    Latin1 一个字符占一个字节,最多能存放 65532 个字符
    GBK 一个字符占两个字节, 最多能存 32766 个字符
    UTF8 一个字符占三个字节, 最多能存 21844 个字符
    注意,char 和 varchar 后面的长度表示的是字符的个数,而不是字节数。

    两相比较,char 的效率高,没有碎片,尤其更新比较频繁的时候,方便数据文件指针的操作。但不够灵活,在实际使用时,应根据实际需求来选用合适的数据类型。

    相关题目:若一个表定义为 create table t1(c int, c2 char(30), c3 varchar(N)) charset=utf8; 问N 的最大值又是多少?

    (65535 - 1 - 2 - 4 - 30 * 3 )/3

     现在大家对于MySQL中varchar和char的区别应该都清楚了吧,有需要的朋友可以了解看看,希望对大家学习MySQL数据库有帮助,想要了解更多大家可以关注群英网络其它相关文章。

文本转载自脚本之家

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: varchar和char
相关信息推荐
2022-05-07 17:44:35 
摘要:mysql中可用UPDATE语句来修改一列的值,语法“UPDATE 表名 SET 字段=新值;”,能修改所有行中指定列的值;如果只想修改一行一列的值,只需添加限制条件即可,语法“UPDATE 表名 SET 字段=新值 WHERE 条件;”。
2022-05-07 17:45:30 
摘要:本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了慢日志查询的相关问题,还包括了show profiles查看sql具体的运行时间等相关内容,希望对大家有帮助。
2022-08-11 17:40:13 
摘要:方法:1、用DROP SEQUENCE语句删除sequence,然后用Create sequence语句重新创建一个;2、用Increment By修改序列初始值,语法为“ALTER SEQUENCE...INCREMENT BY 数值”。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部