当前位置:   article > 正文

MySQL数据类型--字符串类型_数据库中的字符串是什么类型

数据库中的字符串是什么类型

字符串类型是在数据库中存储字符串的数据类型,字符串类型包括char,varchar,text,enum和set。

char类型和varchar类型

两种最主要的字符串类型,怎么存储在磁盘和内存中,跟存储引擎的具体实现有关

char类型

  • 长度是固定,在创建表时就指定了,其长度可以是0-255的任意值
  • MySQL会剔除所有的末尾空格
  • char值会根据需要采用空格进行填充,以方便比较
  • char适合存储很短的字符串,或者所有值都接近于同一个长度(MD5,因为这是定长的值)
  • 对于经常变更的数据,char 也比varchar更好,因为定长的char不易产生碎片,对非常短的列,char比varchar在存储空间上更有效率比如:使用char(1)来存储y和n的值,char需要一个字节,varchar(1)则需要 2 个      字节,因为还有一个记录长度的额外字节

varchar类型

  • 长度是可变的,在创建表时指定了最大长度,定义时,其最大值可以取0-65525之间的任意值,指定了varchar类型最大值以后,其长度可以在0-到最大长度之间
  • 需要使用1或2个额外字节记录字符串的长度,如果列的最大长度<=255,需要1个字节表示,否则需要2个字节表示 ---VARCHAR(10)列需要11个字节存储空间,VARCHAR(1000)需要1002个字节
  • VARCHAR节省了存储空间,对性能也有帮助,但由于行是变长的,在update时可能是行变得比原来更长,需要做额外的操作(字符串列最大长度比平均长度大很多,列的更新很少,所以碎片不是问题)
  • MySQL在存储和检索时会保留末尾空格

 

varchar(5)  和  varchar(10)存储'hello'的空间开销是一样,但是使用更短的列的优势在于:更长的列会消耗更多的内存,因为MySQL会分配固定大小的内存块来保存内部值,尤其是使用内存临时表进行排序或操作时会特别糟糕,在利用磁盘临时表进行排序时也同样糟糕

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/838294
推荐阅读
相关标签
  

闽ICP备14008679号