mysql varchar()最大能定义多少,varchar(2000)正确吗

mysql varchar()最大能定义多少,varchar(2000)正确吗,第1张

mysql5.0版本以前,varchar()最大能定义255。5.0以上版本支百持65535字节长度,utf8编码下最多支持21843个字符度(不为空)。mysql5.0版本以前,varchar(2000)不正确,5.0以上版本正确。

如果某个数据列里包含许多重复的值,就算为它建立了索引也不会有很好的效果。比如说,如果某个数据列里包含的净是些诸如 “0/1” 或 “Y/N” 等值,就没有必要为它创建一个索引。

扩展资料:

与InnoDB数据表相比,在 InnoDB 数据表上,索引对 InnoDB 数据表的重要性要大得多。在 InnoDB 数据表上,索引不仅会在搜索数据记录时发挥作用,还是数据行级锁定机制的基础。“数据行级锁定”的意思是指在事务 *** 作的执行过程中锁定正在被处理的个别记录。

不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE 命令以及 INSERT、UPDATE 和 DELETE 命令。

出于效率方面的考虑,InnoDB 数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。

参考资料来源:百度百科-mySQL

理解确VARCHAR比CHAR存更内容

外CHAR定例定义字段类型CHAR(32)论存110字符数据库都配32字符空间

VARCHAR变定义VARCHAR(32)字段存1字符占1空间、存10占10空间浪费余空间

定处修改便查询便变修改麻烦指系统内部

备注:举例所说占用空间理论值事实需要配NULL标志空间、数据度空间至少要1~2字节

前言

这个问题其实很有迷惑性,问的是字节,不是字符,我们知道在计算机中只能存储二进制数据。所以要搞清楚这个问题?就要搞清楚下面2个问题:

为了搞清楚上面两个问题,又必须搞清楚mysql 的字符集 和比较规则,以及mysql记录的存储结构。这里我们都是以常用的InnoDB引擎为讨论的前提的。

如果你了解了上面的问题,你也可以回答下面的问题

字符集和排序规则

计算机中的的落盘存储都是二进制数据:即bit。所以我们存储字符串的话就要建立字符与二进制数据的映射关系了。

将一个字符映射成一个二进制数据的过程也叫做编码,将一个二进制数据映射到一个字符的过程叫做解码。mysql抽象出一个概念来描述某个字符范围的编码规则 ,这个概念就叫 字符集。

比如:

对于比较规则,就是数据哪个放前面哪个放后面的问题。对于某一种字符集来说,比较两个字符大小的规则可以制定出很多种,也就是说同一种字符集可以有多种比较规则。

常用字符集

字符集收录字符其他ASCII字符集共收录128个字符,包括空格、标点符号、数字、大小写字母和一些不可见字符ISO8859-1字符集共收录256个字符,是在ASCII字符集的基础上又扩充了128个西欧常用字符(包括德法两国的字母),也可以使用1个字节来进行编码。这个字符集也有一个别名latin1GB2312字符集录了汉字以及拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母。其中收录汉字6763个,其他文字符号682个。同时这种字符集又兼容ASCII字符集如果该字符在ASCII字符集中,则采用1字节编码。GBK字符集GBK字符集只是在收录字符范围上对GB2312字符集作了扩充,编码方式上兼容GB2312utf8字符集收录地球上能想到的所有字符,而且还在不断扩充。这种字符集兼容ASCII字符集,采用变长编码方式,编码一个字符需要使用1~4个字节在MySQL中utf8是utf8mb3的别名,所以之后在MySQL中提到utf8就意味着使用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,那请使用utf8mb4

如上图所示5.7.22版本一共支持41种字符集 , Default collation 表示 字符集默认比较规则。 Maxlen 代表该种字符集表示一个字符最多需要几个字节。

这个时候就可以回答2个问题了。

好了,那我们现在知道VARCHAR(M) 到底占用多少个字符 就和mysql 设置的字符集有关系了。

所以下面我们看看VARCHAR(M)落到物理磁盘到底占用多少个字节,用字符集的Maxlen * M 就能得到 字节数了。这就是答案了。

现在我们引申出另外一个问题,varchar 最大能保存多少个字节呢?这个我们下次讨论。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8698091.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存