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

Mysql varchar大小长度问题介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql varchar长度,mysql中varchar长度,mysql varchar,mysql varchar汉字,mysql varchar转int等相关知识,希望本文的分享对您有所帮助
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 ”了。 </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

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

  • mysql VARCHAR的最大长度到底是多少
  • Mysql varchar大小长度问题介绍
  • 探究MySQL中varchar的定义长度
  • 深入研究mysql中的varchar和limit(容易被忽略的知识)

相关文章

  • 2017-05-11MySQL使用命令备份和还原数据库
  • 2018-12-05oracle 常用的几个SQL
  • 2017-05-11解决MySQL无法远程连接的方法
  • 2017-05-11深入探寻mysql自增列导致主键重复问题的原因
  • 2018-12-05Mysql 本地计算机无法启动 mysql 服务 错误 1067:进程意外终止
  • 2018-12-05Window下Mysql忘记root密码怎么重置的图文详细介绍
  • 2018-12-05浅谈SQL Server中统计对于查询的影响分析
  • 2018-12-05MySql如何查看表大小的实例详解
  • 2018-12-05mysql主从库不同步问题解决方法
  • 2018-12-05简单介绍mysql中concat函数和mysql在字段前/后增加字符串的示例代码

文章分类

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

最近更新的内容

    • SQLServer 跨库查询实现方法
    • SQL 比较一个集合是否在另一个集合里存在的方法分享
    • sqlserver数据库迁移后,孤立账号解决办法
    • mysql 服务完全卸载技巧
    • MySQL 服务器参数说明及查看 设置方法
    • mysql 左,右,内连接
    • MAC上Mysql忘记Root密码或权限错误的快速解决方案_MySQL
    • Centos7安装 mysql5.6.29 shell脚本的示例代码分享
    • MySQL开启记录执行过的SQL语句方法
    • MySQL之—使用c3p0与DBCP连接池,造成的MySql 8小时问题的详细代码解决方案

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

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