mysql中char和varchar有什么区别
varchar类型用于存储变长字符串,是一种比较常见的字符串数据类型。
当存储的字符串长度可变时,varchar更节省空间。由于 varchar 是可变长度的,因此在使用 update 时,该行可能会变得比原始行长,这需要额外的工作。
如果某行占用的空间增加,并且页面中没有多余的空间可存储,则innoDB存储引擎需要对页面进行拆分,以便将行放置在页面中。
char类型用于存储固定长度的字符串。
存储数据时,MySQL会删除文本末尾的所有空格。因此,即使你存储:'abc',也要注意末尾有空格这个字符串,它也将被存储。删除这个空格。
mysql中char和varchar数据类型的区别:
1. CHAR的长度是固定的,但VARCHAR2的长度是可以改变的。例如,要存储字符串“abc”,对于CHAR(10)来说,意味着你存储的字符将占用10个字节(包括7个空字符)。同样的VARCHAR2(10)只占用3个字节的长度,10只是最大值。当你存储的字符少于10个时,按照实际长度存储。
2. CHAR 比 VARCHAR2 效率稍高。
3.目前 VARCHAR 是 VARCHAR2 的同义词。行业标准的 VARCHAR 类型可以存储空字符串,但 Oracle 不这样做,尽管它保留将来这样做的权利。 Oracle 开发了一种数据类型 VARCHAR2。此类型不是标准 VARCHAR。它改变了数据库中varchar列可以存储空字符串的特性存储 NULL 值。如果您希望向后兼容,Oracle 建议使用 VARCHAR2 而不是 VARCHAR。
什么时候应该使用 CHAR,什么时候应该使用 varchar2?
CHAR和VARCHAR2是一个矛盾的统一体,两者又是互补的。
VARCHAR2比CHAR节省空间,效率比CHAR稍差,也就是说,如果想获得效率,就必须牺牲一定的空间。这就是我们在数据库设计中常说的“以空间换效率”。
虽然VARCHAR2比CHAR节省空间,但是如果一个VARCHAR2列被频繁修改,并且每次修改的数据长度都不一样,这就会造成‘行迁移’(Row Migration)现象,从而导致数据库设计和调整时应避免冗余I/O。在这种情况下,最好使用 CHAR 而不是 VARCHAR2。
使用场景:
Varchar适用场景:
字符串colu的最大长度mn 比平均长度大得多;
当字符串列很少更新时,因为不存在或很少有内存碎片问题;
使用复杂字符集如UTF -8、每个字符都使用不同的字节数来存储;
char的适用场景:
适合列的长度为固定值的情况,比如:MD5密文数据。
这里分享MySQL中char和varchar的区别。希望以上内容能够对大家有所帮助,可以学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到。
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > mysql中char和varchar有什么区别