varchar长度在MySQL的设置方法
所以,当然,英语是50。
那么中国人呢
UTF-8的中文占3个字节
所以,这个varchar(50)只能保存16个汉字
MySQL varchar(50)是50人中英文
mysql5的文档,它描述了varchar字段类型:VARCHAR(米)长的字符串。M代表列的最大长度,m的范围是0到65535。(的varchar的最大实际长度的长排的大小和使用的字符集和,最大有效长度确定为65532个字节)。
它为什么会这样变化这感觉就像MySQL手册太不友好,因为你需要仔细阅读它,直到你找到这样的描述:MySQL 5.1遵循标准的SQL规范,不删除VARCHAR value.varchar尾部空间是一个字节或多个字节长前缀+数据保存。如果VARCHAR列的长度大于255、长度前缀是两字节。
嗯,它似乎明白了一点,但他使用2字节长度的前缀时,他说的长度大于255,和一次减法:65535-2 = 65533。我不知道这些奶牛计算,保持怀疑的时间
注:我已经测试了UTF8编码的使用,和varchar的最大长度是21854个字节。
在MySQL 5.0.45.版本测试,数据库编码UTF8:最长的VARCHAR类型被定义为21785。也就是说,无论是字母,数字,汉字只能放在21785。
想象一下:VARCHAR字节是最大65535,和UTF8编码的字符和3字节的65535 / 3 = 21785。
补充知识:
在1.varchar型变化
对MySQL数据库的varchar类型的最大长度小于4.1。数据库的版本的最大长度是255,和数据的范围可以是0 ~ 255或1 ~ 255(根据不同版本数据库)。在上述MySQL5.0版本,65535的varchar数据类型支持的长度,这意味着你可以存储65532字节的数据,开始和停止位占用3个字节,也就是说,在4.1或以下版本需要固定文本或BLOB格式存储的数据可以使用varchar变长存储的使用,这样可以有效地减小数据库文件的大小。
MySQL数据库varchar类型下的4.1版本,nvarchar(Unicode数据类型的字符存储)是一个字符或一个汉字,存储为2个字节,常用的中文或其他语言输入,这样不容易混淆;varchar:汉字是2个字节,存款和其他字符1字节,英文和数字输入varchar。
以下的4个版本,varchar(20),这是20个字节,如果存储UTF8汉字,只有6(3字节每个汉字);上述varchar版本5(20),指的是20个字,无论是存储数字、字母或UTF8汉字(每个汉字3字节)。可存储20条,最大大小为65532字节(20;varchar)在mysql4最大只有20字节,但根据mysql5编码,存储大小是不同的,下面的具体规则:
(a)存储限制
VARCHAR字段存储实际内容外聚集索引。内容的开头是1到2字节,表示实际长度(2字节长于255),因此最大长度不能超过65535。
B)代码长度限制
如果字符类型是GBK,每个字符占用2个字节最多和最大长度不能超过32766。
如果字符类型是UTF8,每个字符占用3个字节最多和最大长度不能超过21845。
如果以上超出限制在定义的时候,VARCHAR字段是强制转换为文本型,并产生警告。
线长度限制
在实际应用中的varchar长度限制是线的definition.mysql长度要求线不应超过65535定义的长度。如果桌子的长度超过此值,则提示
错误1118(42000):行大小太大。最大行大小为,例如,大小,65535。
2.char(M),VARCHAR(M)的差异
由char(m)定义的列的长度是固定的,m的值可以是0~255。当字符值保存,空间填充右侧达到指定的长度。当char值返回,在尾部空间删除。没有案例与转换存储或retrieval.char期间执行存储固定长度的数据非常方便,和char字段的索引效率水平高。例如,定义了char(10),然后是否将数据存储到10个字节中,您需要占用10字节空间,并自动填充空白空间。
定义VARCHAR列的长度(m)是可变长度的字符串,和M的值可以是0 ~ 65535。varchar的最大有效长度确定的最大行大小和使用的字符集。整体的最大长度是65532个字节。当VARCHAR值保存,只保存字符数,和另一个字节添加记录的长度(两个字节如果列声明更255。使用)VARCHAR值不充当它被保存。斯特恩空间仍然保留的值被保存和检索,并与标准SQL线。VARCHAR存储数据,但存储效率不焦高。如果一个字段的可能值是不固定长度,我们只知道,它不能超过10个字符,这是最经济的定义为varchar(10)。实际的VARCHAR类型的长度是其+ 1.why值的实际长度是1 这个字节是用来节省多少长度是实际使用。在空间上,它是适当使用varchar;在效率方面,关键是要根据字符的正确使用的实际情况找到平衡点。
CHAR和varchar的最大区别是一个是固定长度的,一个是可变长度的,因为它是可变长度的,实际上是存储实际的字符串,再加上一个字节记录长度的字符串。如果超过255,就需要两个字节。如果分配到CHAR或VARCHAR列的列的最大长度超过价值,价值是专做很合适。如果切的性格不是一个空间,一个警告会产生。如果一个非空字符切割,一个错误(而不是警告)的创建和使用严格的SQL模式禁用插入值。
3之间的区别。varchar和text和BLOB类型
VARCHAR,BLOB和文本类型是可变长度的类型,和他们的存储需求取决于列值的实际长度(在上表中L表示)而不是类型的最大尺寸。例如varchar(10)列可以保存10个字符的最大长度。实际的存储需要的字符串的长度,加上1的记录长度的字符串的字节,string'abcd ',我是4和5字节的存储要求。
Blob和文本类型需要1, 2, 3或4个字节来记录列值的长度,根据不同的type.varchar的最大可能长度需要定义大小,以65535字节的最大极限;文本不需要它。如果你指定一个值超过一列式二进制或文本列的最大长度,以适应它的价值被截断。
一个BLOB二进制大对象可以保存数据的变量的数目。4 BLOB类型,tinyblob,斑点,mediumblob,和LONGBLOB,差别只在最大长度可以节省。
BLOB存储图片,文字不能,文字只能存储纯文本文件。4 tinytext文本类型,文本,mediumtext,和单引号字符对应4 BLOB类型和具有相同的最大长度和存储要求。BLOB和文本类型之间的唯一区别是排序和比较在一个敏感的方式一滴价值,而文本值是区分大小写的。换句话说,一个文本是一个敏感的BLOB的案例。
4。之间的差异总结char、varchar、文本
0 ~ 255字符范围之间的长度差是varchar,长度是64K,但64K行的整个长度,考虑到其他列,如果不为空将占用一个,根据不同的字符集,有效长度是不一样的,如UTF8。高达21845,但其他栏目也删除,但是varchar一般足够的储存空间。如果你有大量的文本,可以考虑使用文字,而最高可以达到4g。
效率基本上是字符> varchar >文本,但如果InnoDB引擎的使用,建议使用varchar代替焦炭
CHAR和VARCHAR可以有默认值,和文本不能指定默认值
在数据库中选择合适的数据类型存储是必要的,它对性能有一定的影响。对于int类型,如果不需要访问负值,则应添加未签名。对于语句中经常出现的字段,考虑添加索引,整形尤其适用于索引。
以上是varchar长度的方法通过MySQL在Xiaobian推出了设置,希望能帮助你。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您支持网站。