MySQL数据类型varchar

目录

varchar(N)的逻辑意义

varchar(N)到底能存多长的数据(65,535 字节)

varchar物理存储


       MySQL中,varchar是最常见的字符串数据类型,它比定长类型char(固定长度的字符串)更节省空间,它仅使用必要的空间,越短的字符串使用越少的空间。

varchar(N)的逻辑意义

       从MySQL4.1开始,varchar (N)中的N指的是该字段最多能存储多少个字符(characters),不是字节数。不管是一个中英文字符或者数字、或者一个汉字,都当做一个字符。在4.1之前,N表示的是最大存储的字节数(bytes)。

varchar(N)到底能存多长的数据(65,535 字节)

       在 MySQL 中,varchar(N) 的最大值为 65,535 字节。

       在 MySQL 中,单行数据总长度(所有字段)的最大大小限制是 64KB(64 × 1024 = 65,536 字节),但实际上可用的最大字节数是 65,535 字节,因为 MySQL 设计时为行的结构和开销预留了一个字节,每一行都有额外的开销(例如,用于存储行的状态或指针等信息),因此实际可用的字节数被限制在 65,535 字节。

varchar物理存储

       varchar需要使用一个或两个额外字节记录字符串的长度。

       在物理存储上,varchar使用1到2个额外的字节表示实际存储的字符串长度(bytes)。当字符数小于等于255(varchar(N) N <= 255)时,MySQL只用1个字节来记录,当字符数多于255(varchar(N) N > 255)时,用2个字节来存长度。

      varchar(N)的实际存储空间 = 实际字符数  *  单字符最大字节数 + 长度前缀开销。

     长度前缀

  •  如果N <= 255,长度前缀占用1个字节。
  •  如果N > 255,长度前缀占用2个字节

     字符集为latin1时,一个字符占用一个字节(byte);UTF-8:一个汉字 = 3个字节,英文是一个字节;GBK: 一个汉字 = 2个字节,英文是一个字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值