6.2.3.2 BLOB 和 TEXT 类型
发布日期:2021-11-09 22:50:40 浏览次数:39 分类:技术文章

本文共 1341 字,大约阅读时间需要 4 分钟。



一个 BLOB 是一个可以保存一可变数量的数据的二进制大对象。四个 BLOB 类型(TINYBLOBBLOBMEDIUMBLOB 和 LONGBLOB)之间的不同仅仅在于他们能保存值的最大长度不一致。查看章节 。

四个 TEXT 类型(TINYTEXTTEXTMEDIUMTEXT 和 LONGTEXT)对应与四个 BLOB 类型,并且有相同的最大长度和存储需求。在 BLOB 和 TEXT 类型之间的唯一差别就是,对 BLOB 值是以字母大小写敏感的方式进行排序和比较的,而对 TEXT 值以忽略字母大小写方式进行排序和比较。换句话说,TEXT 是一个忽略字母大小写的 BLOB

如果将一个超过列类型最大长度的值赋给一个 BLOB 或 TEXT 列,该值将被截断以适应它。

在大多数方面,可以将一个 TEXT 列看作是一个你所希望大 VARCHAR 列。同样的,BLOB 列可以看作是一个 VARCHAR BINARY 列。差别就在于:

  • 在 MySQL 3.23.2 和更新的版本中,可以在 BLOB 和 TEXT 列上建立索引。而较老版本的 MySQL 是不支持的。
  • 当 BLOB and TEXT 列值被存储时,尾部的空格不会被剪切,这与 VARCHAR 列是不一样的。
  •  BLOB 和 TEXT 列不可以有 DEFAULT 值。

MyODBC 以 LONGVARBINARY 定义 BLOB 值,以 LONGVARCHAR 定义 TEXT 值。

因为 BLOB 和 TEXT 值可以非常地长,在使用它们时可能会遇到某些限制:

  • 如果希望在一个 BLOB 或 TEXT 列上使用 GROUP BY 和 ORDER BY,必须将该列值转换为一个定长对象。这样做的标准做法是使用 SUBSTRING 函数。例如:
    mysql> SELECT comment FROM tbl_name,SUBSTRING(comment,20) AS substr    ->                 ORDER BY substr;
    如果你不这样做,只有列值的前 max_sort_length 个字节用于排序。max_sort_length 缺省的值为 1024;在启动 mysqld 服务时,可以使用 -O 选项对它进行更改。可以在一个包含 BLOB 或 TEXT 值的表达式上进行分组,通过指定列的位置或使用一个别名:
    mysql> SELECT id,SUBSTRING(blob_col,1,100) FROM tbl_name GROUP BY 2;mysql> SELECT id,SUBSTRING(blob_col,1,100) AS b FROM tbl_name GROUP BY b;
  • 一个 BLOB 或 TEXT 对象的最大尺寸由其类型决定,但是在客户端和服务器之间实际所能传送的最大值,是由可用内存总数和通讯缓冲区的大小来决定的。你可以改变报文缓冲区的大小,但必须在服务器端与客户端同时这么做。查看章节 。

注意,每个 BLOB 或 TEXT 值在内部由一个独立分配的对象表示。这与其它所有的列类型不一样,当表被打开时,它们被按每列分配一次存储。

转载地址:https://blog.csdn.net/Danlinan/article/details/46344949 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【2】Django(十一)后台管理系统的搭建(VISA)
下一篇:JAVA WEB开发从数据库中查询到的数据用list怎么在JSP页面整齐的显示出来,请写代码,

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年03月27日 06时40分35秒