MySQL 中的 BLOB 和 TEXT 数据类型有啥区别?

Posted

技术标签:

【中文标题】MySQL 中的 BLOB 和 TEXT 数据类型有啥区别?【英文标题】:What are the differences between the BLOB and TEXT datatypes in MySQL?MySQL 中的 BLOB 和 TEXT 数据类型有什么区别? 【发布时间】:2012-07-22 09:55:24 【问题描述】:

什么是blob,什么是text?有什么区别?

什么时候需要使用blob,什么时候需要text作为数据类型?

因为对于blobtext,有mediumblob == mediumtext, smallblob == small text。它们甚至具有相同的含义吗?

看看这个MEDIUMBLOBMEDIUMTEXT L + 3 个字节,其中L < 224

L 是什么?

【问题讨论】:

我认为这篇文章回答了你的问题***.com/questions/7071662/mysql-text-vs-blob-vs-clob 【参考方案1】:

TEXT 和 CHAR 将转换为/从它们与时间关联的字符集。 BLOB 和 BINARY 只存储字节。

BLOB 用于存储二进制数据,Text 用于存储大字符串。

BLOB 值被视为二进制字符串(字节字符串)。它们没有字符集,排序和比较是基于列值中字节的数值。

TEXT 值被视为非二进制字符串(字符串)。它们有一个字符集,并根据字符集的排序规则对值进行排序和比较。

http://dev.mysql.com/doc/refman/5.0/en/blob.html

【讨论】:

那么,我们使用文本来存储诸如“wordpress post”之类的长文本?而我们使用 blob 来存储一个很长的 URL 地址?那么为什么我们不使用 varchar 来存储很长的文本而不是使用 blob 或 text 呢?因为在内存计算中,varchar 非常简单,例如创建表 website( website_name varchar(30) ) 然后我们填写 website_name "***" 所以需要的内存是 13byte TEXT 将被 Varchar(MAX) 替换,但现在取决于您的 mysql 版本,将 TEXT 用于大型文本帖子,例如博客正文帖子等。BLOB 不应该用于存储非常长 URL 地址或大量文本。它通常用于存储图像或其他基于二进制的对象。就我个人而言,我从不使用 BLOB 或 TEXT 并将大量数据存储在相对于基于用户 ID 的文件夹的 xml 文件中。 我不懂基于二进制的对象。你的意思是,我们可以使用 Blob 数据类型将照片存储到数据库中??就像文件夹一样?我对二进制的了解只有 1 或 0。 @nencor 是的,您可以将图像存储到数据库中。您还可以存储档案。但是您不能将文件夹存储到数据库中,因为文件夹实际上是文件系统的功能。 (不过,您最终可以存储一个完整的文件系统,例如作为 iso 文件存储到数据库中) @martin-thoma 我们有一个应用程序,其中服务器端有一个 MongoDB 数据库。应用程序的移动组件使用 SQLLite。需要有一种方法在 MongoDB 数据库和 SQLLite 数据库之间连接数据。 MongoDB 使用 ObjectIds 来唯一标识数据。由于 SQLLite(RDBMS 世界)没有任何直接表示 MongoDB ObjectIds 的方式,我想知道是否可以将 ObjectIds 存储为 BLOB 类型。这听起来像是一个合理的解决方案吗?它会降低性能吗?还有其他缺点吗?【参考方案2】:

Blob 数据类型存储图像等二进制对象,而文本数据类型存储网页文章等文本对象

【讨论】:

【参考方案3】:

TEXT 和 CHAR 或 nchar 通常会转换为纯文本,因此您只能存储字符串等文本。

BLOB 和 BINARY 这意味着您可以存储二进制数据,例如图像只需存储字节。

【讨论】:

存储图像等二进制数据是什么意思?你是说图片网址吗?【参考方案4】:

BLOB 是一个二进制字符串,用于保存可变数量的数据。大多数情况下,BLOB 用于保存实际的图像二进制文件,而不是路径和文件信息。文本用于大量字符串字符。通常一篇博客或新闻文章将构成一个 TEXT 字段

在这种情况下,L 用于说明存储要求。 (Length|Size + 3) 只要小于224即可。

参考:http://dev.mysql.com/doc/refman/5.0/en/blob.html

【讨论】:

【参考方案5】:

根据高性能Mysql书:

BLOBTEXT 系列之间的唯一区别是 BLOB types 存储没有排序规则或字符集的二进制数据,但 TEXT 类型具有字符集和排序规则。

【讨论】:

【参考方案6】:

BLOB 存储超过 2 GB 的二进制数据。 BLOB 的最大大小为 4 GB。 二进制数据是指非结构化数据,即 图片 音频文件 视频文件 数字签名

文本用于存储大字符串。

【讨论】:

以上是关于MySQL 中的 BLOB 和 TEXT 数据类型有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中BLOB和TEXT类型学习--MySql语法

着重基础之—MySql Blob类型和Text类型

MySQL,longtext、text 还是 blob 哪个更高效?提高插入效率

mysql课外积累

mysql数据库中text类型不设置大小默认大小事多少

( 4 )MySQL中的数据类型(字符串类型)