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


117

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

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

因为for blobtext,所以有mediumblob== mediumtextsmallblob== small text。它们甚至具有相同的含义吗?

然后看一下MEDIUMBLOBMEDIUMTEXT L+ 3个字节,其中L < 224

什么L


Answers:


103

TEXT和CHAR将与它们与时间关联的字符集相互转换。BLOB和BINARY仅存储字节。

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

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

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

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


3
因此,我们使用文本来存储长文本,例如“ wordpress post”吗?并且我们使用blob存储非常长的URL地址?那么为什么不使用varchar而不是blob或text来存储很长的文本呢?因为在内存计算中,varchar非常简单,例如创建表website(website_name varchar(30)),然后我们填充website_name为“ stackoverflow”,所以所需的内存为13byte
nencor 2012年

5
TEXT将被Varchar(MAX)取代,但现在取决于您的mysql版本,将TEXT用于大型文本帖子(例如博客正文帖子等)。BLOB不应用于存储非常长的URL地址或大量文本。通常用于存储图像或其他基于二进制的对象。我个人从不使用BLOB或TEXT,并且相对于基于用户ID的文件夹,将大量数据存储在xml文件中。
达西2012年

我不了解基于二进制的对象。您的意思是,我们可以使用Blob数据类型将照片存储到数据库中?就像文件夹一样?所有我知道的二进制只有1或0
nencor

1
@nencor是的,您可以将图像存储到数据库。您还可以存储档案。但是您不能将文件夹存储到数据库,因为文件夹实际上是文件系统的功能。(不过,您最终可以将一个完整的文件系统(例如,一个iso文件)存储到数据库中)
Martin Thoma 2014年

@ martin-thoma我们有一个服务器端具有MongoDB数据库的应用程序。该应用程序的移动组件使用SQLLite。需要一种在MongoDB数据库和SQLLite数据库之间桥接数据的方法。MongoDB使用ObjectIds唯一标识数据。由于SQLLite(RDBMS world)没有任何直接的方式来表示MongoDB ObjectId,因此我想知道是否可以将ObjectId存储为BLOB类型。听起来像是合理的解决方案?它会降低性能吗?还会有其他缺点吗?
CS刘易斯

10

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

BLOB和BINARY表示您可以存储二进制数据,例如图像就可以存储字节。


存储图像等二进制数据是什么意思?您是说图片网址吗?
nencor

10

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


7

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

在这种情况下,L用于说明存储要求。(长度|大小+ 3),只要小于224。

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


3

根据高性能Mysql书:

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


1

BLOB存储的二进制数据大于2 GB。BLOB的最大大小为4 GB。二进制数据表示非结构化数据,即图像音频文件视频文件数字签名

文本用于存储大字符串。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.