!
也想出现在这里? 联系我们
广告位
当前位置:首页>技术分享>网站运维>varchar与char在MySQL里面有什么区别?(数据库char和varchar区别)

varchar与char在MySQL里面有什么区别?(数据库char和varchar区别)

varchar与char在MySQL里面有什么区别?(数据库char和varchar区别)

varchar与char是两种不同的数据类型,在MySQL中是有区别的,具体有以下区别:

区别一,存储数据长度不同

char表示定长,长度固定,char如果插入的长度小于定义长度时,则用空格填充,最大支持255个字符,即varchar(255)。

因为char类型在创建数据表的时候就将其分配的空间和字符长度设置好,如果后面存储的实际数据没有达到先前设置的长度,Mysql数据库会自动在后面用空格填充补齐。在读取数据的时候,MySQL会将字符后面多余的空格字符自动移除,(如果开始了PAD_CHAR_TO_FULL_LENGTHSQLMODE不会移除空格)。

varchar数据长度可变。varchar小于定义长度时,还是按实际长度存储,插入多长就存多长,varchar可以设置的最大长度是varchar(65535)。

varchar类型的数据列是可变长度的字符列,varchar可以设置的最大长度是varchar(65535),但是因为MySQL单行记录数据的localpage最大限制为65535字节(不含offpage),varchar列的长度设置也不能超过这个限制,即一行数据的所有列总大小不能超过65535字节。varchar类型的列因为存储时不会自动填充空格,所以在查询时也是原样检索,不过会过滤数据后面的空格。因为其长度固定,char的存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,可谓是以空间换取时间效率。varchar则刚好相反,以时间换空间。

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

对 char 来说,最多能存放的字符个数 255,和编码无关。而 varchar 呢,最多能存放 65535 个字符。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,535字节。

总结有以下几点:

1、char类型在字段创建时默认分配所有空间,最大支持255个字符,即varchar(255)。

2、varchar类型不默认分配空间,使用多少分配多少,最大支持长度为varchar(65535),但是受限于innodb单行记录不超过65535字节的限制。

3、char类型在数据写入时如果数据长度没有写满,会使用空格填充,读取的时候会自动过滤空格,varchar类型不会自动填充空格和过滤空格。

4、如果SQL MODE开启了严格模式(Strict SQL MODE),那么如果写入数据超过设置长度,则会报错,如果没有开启严格模式,那么数据会被截断写入,并且返回一个warning。

5、char字段类型如果字节数超过768,比如varchar(255)的utf8mb4编码字段,那么内部会转换成可变长度类型,将超过768的字节存储到off-page中。

  • 区别一,存储数据长度不同
  • 区别之二,存储的容量不同

给TA打赏
共{{data.count}}人
人已打赏
网站运维

SQL报1093错误You can’t specify target table for update in FROM clause

2022-10-12 19:20:34

网站运维

MySQL数据库中10位、13位时间戳和标准时间相互转换命令

2022-10-13 19:18:13

声明 本站上的部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。无意侵害您的权益,请发送邮件至 admin@s9h.cn 或点击右侧 私信:少羽 反馈,我们将尽快处理。
0 条回复A文章作者M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索