MySQL数据类型varchar分析
2022-11-12 09:32:56
内容摘要
这篇文章主要为大家详细介绍了MySQL数据类型varchar分析,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!1、varchar(N)的逻辑意义从MySQL4
文章正文
这篇文章主要为大家详细介绍了MySQL数据类型varchar分析,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
1、varchar(N)的逻辑意义从MySQL4.1开始,varchar (N)中的N指的是该字段最多能存储多少个字符(characters),不是字节数。不管是一个中英文字符或者数字、或者一个汉字,都当做一个字符。在4.1之前,N表示的是最大存储的字节数(bytes)。2、varchar(N)到底能存多长的数据在mysql reference manual上,varchar最多能存储65535个字节的数据。varchar 的最大长度受限于最大行长度(max row size,65535bytes)。65535并不是一个很精确的上限,可以继续缩小这个上限。65535个字节包括所有字段的长度,变长字段的长度标识(每个变长字段额外使用1或者2个字节记录实际数据长度)、NULL标识位的累计。NULL标识位,如果varchar字段定义中带有default null允许列空,则需要需要1bit来标识,每8个bits的标识组成一个字段。一张表中存在N个varchar字段,那么需要(N+7)/8 (取整)bytes存储所有的NULL标识位。如果数据表只有一个varchar字段且该字段DEFAULT NULL,那么该varchar字段的最大长度为65532个字节,即65535-2-1=65532 bytes。代码如下:
1 2 | <code>CREATE TABLE `vchar1` ( `name` VARCHAR(65533) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `vchar2` ( `name` VARCHAR(65533) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1;</code> |
代码如下:
1 2 | <code>CREATE TABLE `vchar3` ( `name` VARCHAR(65532) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `vchar4` ( `name` VARCHAR(65532) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1;</code> |
代码如下:
1 2 3 4 5 6 7 8 9 10 11 | <code>CREATE TABLE `tv` ( `a` VARCHAR(100) DEFAULT NULL, `b` VARCHAR(100) DEFAULT NULL, `c` VARCHAR(100) DEFAULT NULL, `d` VARCHAR(100) DEFAULT NULL, `e` VARCHAR(100) DEFAULT NULL, `f` VARCHAR(100) DEFAULT NULL, `g` VARCHAR(100) DEFAULT NULL, `h` VARCHAR(100) DEFAULT NULL, `i` VARCHAR(N) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1</code> |
注:关于MySQL数据类型varchar分析的内容就先介绍到这里,更多相关文章的可以留意
代码注释