我要建房子去什么网站找人做,大流量网站 优化,网站导航仿站,移除wordpress4版本号MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255#xff0c;其数据范围可以是0~255或1~255#xff08;根据不同版本数据库来定#xff09;#xff0c;在 MySQL5.0以上的版本中#xff0c;varchar数据类型的长度支持到了65535#xff0c;也就是说可以存放… MySQL 数据库的varchar类型在4.1以下的版本中的最大长度限制为255其数据范围可以是0~255或1~255根据不同版本数据库来定在 MySQL5.0以上的版本中varchar数据类型的长度支持到了65535也就是说可以存放65532个字节的数据起始位和结束位占去了3个字节也就是说在4.1或以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以使用可变长的varchar来存放这样就能有效的减少数据库文件的大小。 MySQL 数据库的varchar类型在4.1以下的版本中,nvarchar存储的是Unicode数据类型的字符不管是一个字符还是一个汉字,都存为2个字节 一般用作中文或者其他语言输入这样不容易乱码 ;varchar: 汉字是2个字节,其他字符存为1个字节 varchar适合输入英文和数字。 4.0版本以下varchar(20)指的是20字节如果存放UTF8汉字时只能存6个每个汉字3字节 5.0版本以上varchar(20)指的是20字符无论存放的是数字、字母还是UTF8汉字每个汉字3字节都可以存放20个最大大小是65532字节 varchar(20)在Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同具体有以下规则 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.CHAR(M), VARCHAR(M)不同之处 CHAR(M)定义的列的长度为固定的M取值可以为0255之间当保存CHAR值时在它们的右边填充空格以达到指定的长度。当检索到CHAR值时尾部的空格被删除掉,在存储或检索过程中不进行大小写转换。CHAR存储定长数据很方便CHAR字段上的索引效率级高比如定义char(10)那么不论你存储的数据是否达到了10个字节都要占去10个字节的空间,不足的自动用空格填充。 VARCHAR(M)定义的列的长度为可变长字符串M取值可以为0~65535之间(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节。VARCHAR值保存时只保存需要的字符数另加一个字节来记录长度(如果列声明的长度超过255则使用两个字节)。VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留符合标准SQL。varchar存储变长数据但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的我们只知道它不可能超过10个字符把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度1。为什么1呢这一个字节用于保存实际使用了多大的长度。从空间上考虑用varchar合适从效率上考虑用char合适关键是根据实际情况找到权衡点。 CHAR和VARCHAR最大的不同就是一个是固定长度一个是可变长度。由于是可变长度因此实际存储的时候是实际字符串再加上一个记录字符串长度的字节(如果超过255则需要两个字节)。如果分配给CHAR或VARCHAR列的值超过列的最大长度则对值进行裁剪以使其适合。如果被裁掉的字符不是空格则会产生一条警告。如果裁剪非空格字符则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。 3. VARCHAR和TEXT、BlOB类型的区别 VARCHARBLOB和TEXT类型是变长类型对于其存储需求取决于列值的实际长度(在前面的表格中用L表示)而不是取决于类型的最大可能尺寸。例如一个VARCHAR(10)列能保存最大长度为10个字符的一个字符串实际的存储需要是字符串的长度 加上1个字节以记录字符串的长度。对于字符串abcdL是4而存储要求是5个字节。 BLOB和TEXT类型需要123或4个字节来记录列值的长度这取决于类型的最大可能长度。VARCHAR需要定义大小有65535字节的最大限制TEXT则不需要。如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列值被截断以适合它。 一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。 BLOB 可以储存图片,TEXT不行TEXT只能储存纯文本文件。4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于4个BLOB类型并且有同样的最大长度和存储需求。在BLOB和TEXT类型之间的唯一差别是对BLOB值的排序和比较以大小写敏感方式执行而对TEXT值是大小写不敏感的。换句话说一个TEXT是一个大小写不敏感的BLOB。 4.总结charvarchartext区别 长度的区别char范围是0255varchar最长是64k但是注意这里的64k是整个row的长度要考虑到其它的column还有如果存在not null的时候也会占用一位对不同的字符集有效长度还不一样比如utf8的最多21845还要除去别的column但是varchar在一般情况下存储都够用了。如果遇到了大文本考虑使用text最大能到4G。 效率来说基本是charvarchartext但是如果使用的是Innodb引擎的话推荐使用varchar代替char,char和varchar可以有默认值text不能指定默认值 数据库选择合适的数据类型存储还是很有必要的对性能有一定影响。这里在零碎记录两笔对于int类型的如果不需要存取负值最好加上unsigned对于经常出现在where语句中的字段考虑加索引整形的尤其适合加索引。转载于:https://www.cnblogs.com/sunfie/p/4803045.html