当前位置: 首页 > 编程笔记 >

MySQL中TEXT与BLOB字段类型的区别

丌官利
2023-03-14
本文向大家介绍MySQL中TEXT与BLOB字段类型的区别,包括了MySQL中TEXT与BLOB字段类型的区别的使用技巧和注意事项,需要的朋友参考一下

在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型。

下面给出几点区别:

一、主要差别

TEXT与BLOB的主要差别就是BLOB保存二进制数据,TEXT保存字符数据。目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用<img>标签引用,这样的博客就可以使用TEXT类型。而BLOB就可以把图片换算成二进制保存到数据库中。

二、类型区别

BLOB有4种类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

TEXT也有4种类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些类型同BLOB类型一样,有相同的最大长度和存储需求。

三、字符集

BLOB列没有字符集,并且排序和比较基于列值字节的数值值。TEXT列有一个字符集,并且根据字符集的校对规则对值进行排序和比较

四、大小写

在TEXT或BLOB列的存储或检索过程中,不存在大小写转换,都一样!

五、严格模式

运行在非严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告。

六、其它

当保存或检索BLOB和TEXT列的值时不删除尾部空格。

对于BLOB和TEXT列的索引,必须指定索引前缀的长度。

BLOB和TEXT列不能有默认值。

当排序时只使用该列的前max_sort_length个字节。max_sort_length的 默认值是1024。

当你想要使超过max_sort_length的字节有意义,对含长值的BLOB或TEXT列使用GROUP BY或ORDER BY的另一种方式是将列值转换为固定长度的对象。标准方法是使用SUBSTRING函数。

BLOB或TEXT对象的最大大小由其类型确定,但在客户端和服务器之间实际可以传递的最大值由可用内存数量和通信缓存区大小确定。你可以通过更改max_allowed_packet变量的值更改消息缓存区的大小,但必须同时修改服务器和客户端程序。

 类似资料:
  • 问题内容: 什么是什么?有什么区别? 什么时候需要使用,什么时候需要作为数据类型? 因为for 和,所以有== ,== 。它们甚至具有相同的含义吗? 然后看一下,+ 3个字节,其中。 什么啊 问题答案: TEXT和CHAR将与它们与时间关联的字符集相互转换。BLOB和BINARY仅存储字节。 BLOB用于存储二进制数据,而Text用于存储大字符串。 BLOB值被视为二进制字符串(字节字符串)。它们

  • 问题内容: 我在MySQL中有一个消息表,该表记录了用户之间的消息。除了典型的ID和消息类型(所有整数类型)之外,我还需要将实际消息文本另存为VARCHAR或TEXT。我将前端限制设置为3000个字符,这意味着消息插入数据库的时间绝不会超过此时间。 是否有理由使用VARCHAR(3000)或TEXT?只是编写VARCHAR(3000)有点不合常理。我曾经在Stack Overflow上浏览过其他类

  • 问题内容: 从性能角度和可用性角度来看,这些不同数据类型的区别,优点和缺点是什么? 问题答案: TEXT是用于基于文本的输入的数据类型。另一方面,由于BLOB和CLOB具有更大的容量限制(例如4GB),因此它们更适合于数据存储(图像等)。 至于BLOB和CLOB之间的区别,我相信CLOB具有与之相关的字符编码,这意味着它可以很好地适用于大量文本。 相对于从TEXT字段中检索数据的速度,BLOB和C

  • 问题内容: 如何使用Django的ORM和PostgreSQL后端存储二进制数据的“ blob”?是的,我知道Django对这种事情不屑一顾,是的,我知道他们更喜欢你使用ImageField或FileField来表示,但这足以说明我的应用程序不切实际。 我曾尝试通过使用TextField对其进行破解,但是当我的二进制数据未严格确认模型的编码类型(默认为unicode)时,会出现偶尔的错误。例如 问

  • 问题内容: 我有一个使用mysql数据库的应用程序,但是我想在hsqldb内存数据库中运行该应用程序的单元测试。问题是我的某些可持久模型对象具有一些字段,这些字段已注释为columnDefinition =“ TEXT”以强制mysql满足长字符串值,但现在hsqldb不知道TEXT的含义。如果我将其更改为CLOB,则hsqldb很好,但mysql失败。 有没有可用于与mysql和hsqldb兼容

  • 我试图用JOOQ生成这个简单的SQL,但由于某些原因,我无法完成。 我以为会是这样 不幸的是,MySQLDataType已被弃用()。所以我试过了 但是我得到了以下SQL,这是不合法的。 有什么提示吗?