面试题答案
一键面试存储机制
- 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)。