就是说varchar(0)最多能存多少个字符。不知道的不要乱回答,谢谢。
第1个回答 2017-10-25
varchar的值为 0 看清楚是 值~ 值~ 值~ 值~ 值~ 值~ 不是长度
第2个回答 推荐于2017-10-25
就中文汉字来说,utf8占3个字节 ,gbk占2个字节。varchar(n),这里的n代表n个字符。
mysql表中字段总长度可以有65535个字节,意思就是 如果一个表只有varchar(n)这么一个字段,而且是utf8的话,那么这个字段最大可以有65535个字节的长度,差不多n=65585/3的字符。
为什么说差不多。因为varchar在存储的时候,会另加一个字节来记录长度(如果列声明的长度超过255字节,则使用两个字节,刚好2的8次方是255,超过255就只能用2个字节16位来记录了)。
如果表中有个char(10)和varchar(n)的话,那么就就这样,n的最大值=65535-10*3-2。
英文的话 两种编码都是一个字母是1个字节,据说全角英文占2个字节。能放多少个可以自己测试的,其中的编码知识,值得研究,但是不值得深究,我感觉太钻牛角尖了。
varchar(0),能存放多少还要看这个表中其他字段占掉多少的长度,和编码格式,才能算出来,我上面已经给出算法过程了。你慢慢理解。
这应该够清楚了。追问
列类型 存储需求
CHAR(M) M个字节,0 <= M <= 255
VARCHAR(M) L+1个字节,其中L <= M 且0 <= M <= 65535(参见下面的注释)
BINARY(M) M个字节,0 <= M <= 255
VARBINARY(M) L+1个字节,其中L <= M 且0 <= M <= 255
TINYBLOB, TINYTEXT L+1个字节,其中L < 28
BLOB, TEXT L+2个字节,其中L < 216
MEDIUMBLOB, MEDIUMTEXT L+3个字节,其中L < 224
LONGBLOB, LONGTEXT L+4个字节,其中L < 232
ENUM('value1','value2',...) 1或2个字节,取决于枚举值的个数(最多65,535个值)
SET('value1','value2',...) 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)追问
mysql表中字段总长度可以有65535个字节,意思就是 如果一个表只有varchar(n)这么一个字段,而且是utf8的话,那么这个字段最大可以有65535个字节的长度,差不多n=65585/3的字符。
为什么说差不多。因为varchar在存储的时候,会另加一个字节来记录长度(如果列声明的长度超过255字节,则使用两个字节,刚好2的8次方是255,超过255就只能用2个字节16位来记录了)。
如果表中有个char(10)和varchar(n)的话,那么就就这样,n的最大值=65535-10*3-2。
英文的话 两种编码都是一个字母是1个字节,据说全角英文占2个字节。能放多少个可以自己测试的,其中的编码知识,值得研究,但是不值得深究,我感觉太钻牛角尖了。
varchar(0),能存放多少还要看这个表中其他字段占掉多少的长度,和编码格式,才能算出来,我上面已经给出算法过程了。你慢慢理解。
这应该够清楚了。追问
我知道这些东西,我问的是0啊,这个0代表的是不能存字节呢?还是不限制字节呢??而且你说的不准确,是一个表还是一条记录最多能存65535个字节。我觉得不会是两个字段共享一个varchar最大范围,这样很不科学。网上也没有你这样的说法。我觉得这说法不正确。
追答MyISAM表中行的最大大小为65,534字节。每个BLOB和TEXT列
账户只占其中的5至9个字节。
这是手册上的,varchar(0)应该最大值就是0,你存不进去东西,应该就是一个null,回头我测试下。
下面是mysql手册上写的很详细。
字符串类型的存储需求列类型 存储需求
CHAR(M) M个字节,0 <= M <= 255
VARCHAR(M) L+1个字节,其中L <= M 且0 <= M <= 65535(参见下面的注释)
BINARY(M) M个字节,0 <= M <= 255
VARBINARY(M) L+1个字节,其中L <= M 且0 <= M <= 255
TINYBLOB, TINYTEXT L+1个字节,其中L < 28
BLOB, TEXT L+2个字节,其中L < 216
MEDIUMBLOB, MEDIUMTEXT L+3个字节,其中L < 224
LONGBLOB, LONGTEXT L+4个字节,其中L < 232
ENUM('value1','value2',...) 1或2个字节,取决于枚举值的个数(最多65,535个值)
SET('value1','value2',...) 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)追问
好的!谢谢~
本回答被提问者采纳