一个团
是一个二进制大对象,可以保存可变数量的数据。这四个团
类型是TINYBLOB
,团
,MEDIUMBLOB
,LONGBLOB
.它们的区别仅仅在于它们所能容纳的值的最大长度。这四个文本
类型是非常小的文本串
,文本
,简单
,量变
.这些对应4团
类型和具有相同的最大长度和存储要求。看到第11.7节“数据类型存储要求”.
团
值被视为二进制字符串(字节字符串)。他们有二进制
字符集和排序,以及比较和排序都基于列值中字节的数值。文本
值被视为非二进制字符串(字符串)。他们的性格除了二进制
,并根据字符集的排序方式对值进行排序和比较。
如果没有启用严格的SQL模式,并且将值赋给团
或文本
如果列的长度超过该列的最大长度,则该值将被截断以适合该列,并生成警告。对于非空格字符的截断,可以使用严格的SQL模式导致发生错误(而不是警告)并抑制值的插入。看到第5.1.11节,“Server SQL模式”.
从要插入的值截断多余的尾随空格文本
列总是生成一个警告,无论SQL模式是什么。
为文本
而且团
列,在插入时不填充,在选择时不剥离字节。
如果一个文本
列被索引,索引条目比较在最后被空格填充。这意味着,如果索引需要唯一值,则仅在尾随空格数量上不同的值将发生重复键错误。例如,如果一个表包含“一个”
,试图储存“一个”
导致重复密钥错误。这对团
列。
在大多数方面,你可以把团
列作为一个VARBINARY
列可以任意大。类似地,你可以考虑文本
列作为一个VARCHAR
列。团
而且文本
不同于VARBINARY
而且VARCHAR
可以通过以下方式:
对索引
团
而且文本
列时,必须指定索引前缀长度。为字符
而且VARCHAR
,前缀长度可选。看到第8.3.5节“列索引”.
如果您使用二进制
属性与一个文本
数据类型,列被赋值为二进制(_bin
)列字符集的排序。
长
而且LONG VARCHAR
映射到简单
数据类型。这是一个兼容性特性。
MySQL连接器/ ODBC定义团
值作为LONGVARBINARY
而且文本
值作为用LONGVARCHAR
.
因为团
而且文本
值可以非常长,在使用它们时可能会遇到一些限制:
只有第一个
max_sort_length
在排序时使用列的字节。的默认值。max_sort_length
是1024。的值可以使更多的字节在排序或分组中显着max_sort_length
在服务器启动或运行时。任何客户端都可以更改其会话的值max_sort_length
变量:SET max_sort_length = 2000;mysql> SELECT id, comment FROM > ORDER BY comment;
的实例
团
或文本
使用临时表处理的查询结果中的列将导致服务器使用磁盘上的表而不是内存中的表,因为内存
存储引擎不支持这些数据类型(参见第8.4.4节“MySQL内部临时表的使用”).使用磁盘会导致性能损失,所以include团
或文本
列只有在确实需要时才会出现在查询结果中。例如,避免使用SELECT *
,它将选择所有列。的最大大小
团
或文本
对象是由它的类型决定的,但是在客户机和服务器之间实际可以传输的最大值是由可用内存量和通信缓冲区的大小决定的。的值可以更改消息缓冲区大小max_allowed_packet
变量,但必须对服务器和客户机程序都这样做。例如,mysql而且, mysqldump使您能够更改客户端max_allowed_packet
价值。看到第5.1.1节“配置服务器”,第4.5.1节,mysql命令行客户端,“mysqldump -一个数据库备份程序”4.5.4节.您可能还想将包大小和所存储的数据对象的大小与存储要求进行比较,请参见第11.7节“数据类型存储要求”
每一个团
或文本
值在内部由一个单独分配的对象表示。这与所有其他数据类型相反,其他数据类型在打开表时为每列分配一次存储。
在某些情况下,可能需要将媒体文件等二进制数据存储在团
或文本
列。您可能会发现MySQL的字符串处理函数对于处理这些数据很有用。看到第12.8节“字符串函数和操作符”.出于安全性和其他原因,通常最好使用应用程序代码,而不是向应用程序用户提供文件
特权。你可以在MySQL论坛(http://forums.10bet靠谱mysql.com/).
在mysql的值,二进制字符串使用十六进制表示法显示——binary-as-hex
.有关该选项的更多信息,请参见第4.5.1节,mysql命令行客户端.