1.我们经常 mysql创建 varchar(20)  name这个 20长度 究竟是表示的字符数还是字节数?根编码字符集又有没有关系?

首先 mysql 5.X 以上的版本的 定义中 表示的字符长度,如上varchar(20)你既可以添加20个英文字符,也可以添加二十个中文字符。 表示的字符长度

mysql 4.X 的版本表示的是字节长度,会根据字符集转变 内容字节长度存储。

2.关于 int(2) 中的2  ,表示的并非是int类型只能输入2位数字,而是只能显示2位数字范围,可以添加11位的int的任何数字。

3.mysql 5.X以上版本  存储时 char最大255字节,这个和字符集是否有关系?

本人测试没有关系,字符集是GBK或者UTF-8在char(255)下都可已添加255个字符(字母或者汉字或者都有)。

------------------------

1、限制规则

字段的限制在字段定义的时候有以下规则: 
a) 存储限制 
varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。 
b) 编码长度限制 
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766; 
  字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。 
  对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。 
  若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。 
c) 行长度限制 
   导致实际应用中varchar长度限制的是一个行定义的长度。 MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示 
  ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to    change some columns to TEXT or BLOBs。 
2、计算例子 
  举两个例说明一下实际长度的计算。 
a) 若一个表只有一个varchar类型,如定义为 
create table t4(c varchar(N)) charset=gbk; 
则此处N的最大值为(65535-1-2)/2= 32766。 
减1的原因是实际行存储从第二个字节开始'; 
减2的原因是varchar头部的2个字节表示长度; 
除2的原因是字符编码是gbk。

b) 若一个表定义为 
create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8; 
则此处N的最大值为 (65535-1-2-4-30*3)/3=21812 。(一行长度限制)
减1和减2与上例相同; 
减4的原因是int类型的c占4个字节; 
减30*3的原因是char(30)占用90个字节,编码是utf8。

如果被varchar超过上述的b规则,被强转成text类型,则每个字段占用定义长度为11字节,当然这已经不是“varchar”了。

Mysql varchar 字节长度相关推荐

  1. mysql varchar最大长度多少

    最近去面试问了一个问题,mysql一行有长度限制的,如果太长你如何处理,所以回来查看了一下 mysql一行最长不超过65535字节, 如果采用gbk,一个中文2个字节,如果是utf-8,一个中文是3个 ...

  2. mysql varchar 默认长度_MySQL VARCHAR类型字段到底可以定义多长

    MySQL 单行行长最大是65535,不包含TEXT,BLOB类型. varchar 长度小于255时,需要额外使用1字节存储长度,大于255时,需要 额外使用2字节存储长度. varchar 栏位如 ...

  3. mysql float字节长度_分析MySQL数据类型的长度

    分析MySQL数据类型的长度 MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length).VARCHAR(Length).TINYINT(Length). SMAL ...

  4. Mysql varchar类型长度计算(mysql字段长度计算)

    博客上的文章深度参差不齐,本人也是看了好几篇博客才找到另自己满意的博客. 1.限制规则 字段的限制在字段定义的时候有以下规则: a)存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内 ...

  5. MySQL字符集编码中,VARCHAR 字符长度与字节长度的理解

    MySQL中基于 UTF-8 字符集编码,VARCHAR 字符长度与字节长度的理解 UTF-8 字符集 utf8mb4 字符集 参考 UTF-8 字符集 在 mysql 4.1 及之前早期版本中,如果 ...

  6. MySQL中VARCHAR最大长度是多少?CHAR和VARCHAR有哪些区别?

    以我多年经验来看,VARCHAR的最大长度.字符串类型选择,用MySQL的人中十之七八是不清楚的. 本文不止介绍了原理,还提供了案例手把手教你自己分析,彻底解决你的疑惑. 假设有个VARCHAR(64 ...

  7. MySQL中字段类型与合理的选择字段类型;int(11)最大长度是多少?varchar最大长度是多少?...

    字段类型 数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数. 许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允 ...

  8. MySQL中varchar最大长度是多少

    一. varchar存储规则: 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)  5.0版本以上,varchar(20),指的是20字符, ...

  9. mysql varchar 长度限制_MySQL数据库varchar的限制规则说明

    MySQL数据库中varchar最大长度是多少?其实这不是一个固定的数字,varchar的长度是有限制规则的.本文我们就来介绍一下MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规 ...

最新文章

  1. python tkinter设置窗口大小_Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例...
  2. analyzing problems
  3. 如何验证自己的网络是否支持ipv6
  4. thinkphp整合swoole
  5. JupyterNotebook随记(part1)--打开默认目录
  6. js date转成 时间字符串_秋招快要开始了,前端笔试中的坑位-JS隐式转换问题
  7. linux共享软件_为什么 linux 要用 tar.gz,很少用 7z 或 zip?
  8. 两台XP系统电脑用双网卡共享上网操作
  9. MySQL查看修改存储引擎总结
  10. C++--第7课 - 面向对象基本概念
  11. mysql 关联查询速度慢 (解决)
  12. 计算机一级题库百度云0,全国计算机等级考试一级题库完整.pdf
  13. 签名格式 - 职场 Email 礼仪
  14. Mysql数据库中修改密码的几种方式
  15. 贝尔商道赚钱思维36道第09道:今之赚大钱者
  16. Java数组的扩容与缩减
  17. Android 点击键盘外 非输入框 关闭软键盘
  18. 鸟哥LINUX操作练习(8):Linux 磁盘与文件系统管理
  19. 量子计算机采用超导技术吗,新发现的超导体材料可能是量子计算机的硅
  20. 解决ViVO 手机安装APP失败问题

热门文章

  1. 合并相同数据的行_R语言笔记(六):数据框重塑(reshape2)
  2. php 将字符串打乱,PHP内部实现打乱字符串顺序函数str_shuffle的方法
  3. python中文词云图代码_Python简单实现词云图代码及步骤解析
  4. Python中的生成器与迭代器
  5. dj打碟怎么学_学DJ要不要去培训学校?
  6. android新建项目错误,新建Android项目出错
  7. java解析带斜杠的参数_Java Spring MVC应用程序仅接受带有斜杠的POST请求
  8. python是强定义语言吗_python是强类型语言吗
  9. c++输出重定向 linux,C++ stderr/stdout 重定向到文件
  10. ubuntu 安装java jdk_「ubuntu安装jdk」Ubuntu安装jdk8的两种方式 - seo实验室