服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|

服务器之家 - 数据库 - Mysql - MySQL数据库varchar的限制规则说明

MySQL数据库varchar的限制规则说明

2019-11-23 19:07mysql技术网 Mysql

本文我们主要介绍了MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,希望能够对您有所帮助。

MySQL数据库varchar最大长度是多少?其实这不是一个固定的数字,varchar的长度是有限制规则的。本文我们就来介绍一下MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,接下来就让我们一起来了解一下这部分内容。

1、限制规则

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

a)存储限制

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

b)编码长度限制

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

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

若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。

c)行长度限制

导致实际应用中varchar长度限制的是一个行定义的长度。MySQL要求一个行的定义长度不能超过65535。若定义的表长度超过这个值,则提示ERROR1118(42000):Rowsizetoolarge.Themaximumrowsizefortheusedtabletype,notcountingBLOBs,is65535.YouhavetochangesomecolumnstoTEXTorBLOBs。

2、计算例子

举两个例说明一下实际长度的计算。

a)若一个表只有一个varchar类型,如定义为createtablet4(cvarchar(N))charset=gbk;则此处N的最大值为(65535-1-2)/2=32766。

减1的原因是实际行存储从第二个字节开始';

减2的原因是varchar头部的2个字节表示长度;

除2的原因是字符编码是gbk。

b)若一个表定义为createtablet4(cint,c2char(30),c3varchar(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的限制规则的知识就介绍到这里了,希望本次的介绍能够对您有所收获!

延伸 · 阅读

精彩推荐
  • MysqlCan't connect to MySQL server的解决办法

    Can't connect to MySQL server的解决办法

    ERROR 2003 (HY000): Can't connect to MySQL server on '*.*.*.*' (113)的解决办法 ...

    mysql教程网4352019-11-08
  • MysqlMySQL服务器的启动和关闭

    MySQL服务器的启动和关闭

    作为MySQL管理员,一个普通的目标就是确保服务器尽可能地处于运行状态,使得客户机能够随时访问它。但是,有时最好关闭服务器(例如,如果正在进行...

    mysql技术网4342019-10-21
  • Mysqllinux下讲解MySQL安装与登录方法

    linux下讲解MySQL安装与登录方法

    MySQL安装文件已被广泛应用但是也在不断的更新,这里介绍MySQL安装文件设置使用,帮助大家安装更新MySQL安装文件系统。 ...

    mysql教程网3232019-11-11
  • Mysqlmysql的日期和时间函数大全

    mysql的日期和时间函数大全

    mysql的日期和时间函数 这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。 ...

    mysql技术网3672019-10-21
  • MysqlMySQL 查询某个字段不重复的所有记录

    MySQL 查询某个字段不重复的所有记录

    现在想从这5条记录中查询所有title不重复的记录 ...

    mysql教程网2382019-10-27
  • MysqlMySQL 常用命令

    MySQL 常用命令

    有很多朋友虽然安装好了 MySQL 但却不知如何使用它。在这篇文章中我们就从连接 MySQL、修改密码、增加用户等方面来学习一些 MySQL 的常用命令。 ...

    mysql技术网3172019-10-15
  • Mysql汇总整理MYSQL相关操作命令

    汇总整理MYSQL相关操作命令

    本文汇总了一些常用的mysql命令。 ...

    mysql教程网3162019-10-26
  • Mysql一些mysql启动参数的说明和优化方法

    一些mysql启动参数的说明和优化方法

    要求MySQL能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新...

    MYSQL教程网3212019-11-16