• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > Mysql varchar大小长度问题介绍

Mysql varchar大小长度问题介绍

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了varchar,大小长度等相关知识,希望本文的分享对您有所帮助

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

4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节
Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。

1、限制规则

字段的限制在字段定义的时候有以下规则:

a) 存储限制

varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。

b) 编码长度限制

字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;

字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。

若定义的时候超过上述限制,则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 ”了。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 深入char、varchar、text和nchar、nvarchar、ntext的区别详解
  • mysql VARCHAR的最大长度到底是多少
  • MySQL中CHAR和VARCHAR类型演变和详解
  • Mysql varchar大小长度问题介绍
  • MySQL数据库varchar的限制规则说明
  • mysql中char与varchar的区别分析
  • char、varchar、nchar、nvarchar、text之间有哪些区别
  • mysql中关于char和varchar的区别
  • 解析MySQL动态修改varchar长度的方法
  • MySQL中char与varchar数据类型选择原则

相关文章

  • 2017-05-11mysql中文排序注意事项与实现方法
  • 2018-12-05报错-nodejs链接mysql数据库错误
  • 2017-05-11MySQL数据库导出与导入及常见错误解决
  • 2018-12-05MyBatis3 用log4j在控制台输出 SQL( 数据库操作技巧)
  • 2018-12-05在Windows主机上定时备份远程VPS(CentOS)数据的批处理
  • 2018-12-05MySQL数据库如何解决无法被其他ip访问的方法
  • 2018-12-05存储过程的定义、修改和删除的操作方法
  • 2018-12-05用mysql 查询奇偶数的实例代码
  • 2018-12-05MySQL EXPLAIN 命令详解学习
  • 2018-12-05Mysql源码学习笔记 偷窥线程

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 有用的SQL语句(删除重复记录,收缩日志)
    • Ubuntu下启动、停止、重启MySQL,查看错误日志命令大全
    • mysql常用基础操作语法(五)--对数据的简单条件查询【命令行模式】
    • 分享一个纯 Python 实现的 MySQL 客户端操作库
    • MySQL远程访问设置终极方法
    • SQLServer Execpt和not in 性能区别
    • 有关mysql_select_db()的文章推荐
    • mysql SKIP-NAME-RESOLVE 错误的使用时机造成用户权限
    • 有关下载zip的文章推荐10篇
    • MYSQL 随机 抽取实现方法及效率分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有