MST

星途 面试题库

面试题:MySQL中BLOB和TEXT字段在存储上有哪些主要区别?

请详细阐述MySQL中BLOB和TEXT这两种数据类型在存储机制、字符集处理、最大长度限制等方面存在的主要差异。
27.5万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

存储机制

  • BLOB
    • 主要用于存储二进制大对象,如图片、音频、视频等非文本数据。它把数据当作二进制字节流来处理,不关心数据的具体内容和格式,存储时不会对数据进行字符集转换等处理。
    • 存储时会根据实际数据长度动态分配空间,以适应不同大小的二进制数据存储需求。
  • TEXT
    • 专门用于存储文本数据,比如文章、评论等。存储时会根据所设定的字符集对数据进行编码转换。
    • 同样会根据文本长度动态分配空间,但处理的是文本字符,而非二进制字节流。

字符集处理

  • BLOB
    • 不支持字符集和排序规则。因为它处理的是二进制数据,没有字符集的概念,也不涉及字符编码转换等操作。
  • TEXT
    • 支持字符集和排序规则。不同的字符集对相同文本的编码方式不同,例如UTF - 8和GBK对中文字符的编码长度就不一样。MySQL会根据设定的字符集对TEXT数据进行正确的编码和解码,并且在排序和比较操作时会依据相应的排序规则进行。

最大长度限制

  • BLOB类型
    • TINYBLOB:最大长度为255字节(2^8 - 1)。
    • BLOB:最大长度为65535字节(2^16 - 1)。
    • MEDIUMBLOB:最大长度为16777215字节(2^24 - 1)。
    • LONGBLOB:最大长度为4294967295字节(2^32 - 1)。
  • TEXT类型
    • TINYTEXT:最大长度为255字符(2^8 - 1)。这里的长度是指字符数,具体字节数取决于字符集。例如UTF - 8编码下,一个汉字可能占3个字节,那么TINYTEXT能存储的汉字数量会小于255个。
    • TEXT:最大长度为65535字符(2^16 - 1)。同样,实际字节数受字符集影响。
    • MEDIUMTEXT:最大长度为16777215字符(2^24 - 1)。
    • LONGTEXT:最大长度为4294967295字符(2^32 - 1)。