MySQL中,BLOB是个类型系列,包括:
TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
MySQL的四种TEXT类型:
TINYTEXT, TEXT, MEDIUMTEXT 和LONGTEXT。
BLOG 值按照二进制串来进行处理,不是字符集合,比较是基于在列中二进制数值值。
TEXT 值按照非二进制串来处理,是字符集合,比较是基于字符collation.
当sql mode为严格模式时,赋值给BLOG或者TEXT列超过列的最大长度时,值将被截断并报一个warning信息。
在很多方面,可以将BLOB列当做VARBINARY列一样设置长度。同样,你可以将TEXT列当做VARCHAR列一样。BLOB和TEXT 在VARCHAR 和 VARCHAR的不同之处在下面几个方面:
1、当为索引时,必须具体索引前缀长度。前缀长度是可选的。
2、BLOB , TEXT 列不能有默认值。
尽量减少对该列的查询,除非必要。
BLOB 或者TEXT对的最大值取决于type,但在客户端和服务器之间传输的最大值依赖于可用的内存和可以用于传输的buffer大小。我们可以改变系统变量max_allowed_packet,来改变消息buffer的大小,但是必须在客户端和服务器上同时改变。
每个BLOB或者TEXT值,有一些独立的内存对象合成。这是与其他类型的对象不同的地方。
有些时候,用BLOB或者TEXT列来存储一些类似于媒体文件这种binary data。你可能会找到MYSQL用 string类型处理这些数据有相同的功能。出于安全或者其他的原因,通常更倾向于用应用代码而不是给应用以特权来实现。