首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

char、varchar、binary和varbinary的区别与联系

char使用固定长度的空间进行存储,char(4)存储4个字符,根据编码方式的不同占用不同的字节,gbk编码方式,不论是中文还是英文,每个字符占用2个字节的空间,utf8编码方式,每个字符占用3个字节的空间。 如果需要存储的字符串的长度跟所有值的平均长度相差不大,适合用char,如MD5。 对于经常改变的值,char优于varchar,原因是固定长度的行不容易产生碎片。 对于很短的列,char优于varchar,原因是varchar需要额外一个或两个字节存储字符串的长度。 varchar保存可变长度的字符串,使用额外的一个或两个字节存储字符串长度,varchar(10),除了需要存储10个字符,还需要1个字节存储长度信息(10),超过255的长度需要2个字节来存储 例外:Myisam引擎中使用ROW_FORMAT=FIXED时,每行使用相同的空间,造成浪费 char和varchar后面如果有空格,char会自动去掉空格后存储,varchar虽然不会去掉空格,但在进行字符串比较时,会去掉空格进行比较

01
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Mysql】varchar类型

    (1)varchar (N):中的N指的是字符的长度,即:该字段最多能存储多少个字符(characters),不是字节数。不管是一个中英文字符或者数字、或者一个汉字,都当做一个字符。 【 a,我,1 都是一个字符,但是a和1是一个字节,‘我’(utf8下)是3个字节。 utf8mb4下:汉字也是3个字节,表情符号是4个字节 】 (2)varchar 最多能存储 65535 个字节的数据。 65535 = 所有字段的长度 + 变长字符的长度标识 + NULL标识位 变长字符的长度标识:用1到2个字节表示实际长度(长度 >255 时,需要2个字节; <255 时,需要1个字节) NULL标识位:varchar字段定义中带有 default null 允许列空,则需要 1 bit 来标识,每 8 个bits的标识组成一个字段。一张表中存在N个varchar字段,那么需要(N+7)/8 (取整)bytes存储所有的NULL标识位。

    03
    领券