数据类型二进制字符串类型

举报
xcc-2022 发表于 2022/07/24 11:13:43 2022/07/24
【摘要】 9.4 二进制字符串类型MySQL中的二进制字符串类型主要存储一些二进制数据,比如可以存储图片、音频和视频等二进制数据,本节就简单介绍下MySQL支持的二进制字符串类型。9.4.1 二进制字符串类型概述MySQL中支持的二进制字符串类型主要包括BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB类型。每种类型的长度和存储空间如表9-10...

9.4 二进制字符串类型

MySQL中的二进制字符串类型主要存储一些二进制数据,比如可以存储图片、音频和视频等二进制数据,本节就简单介绍下MySQL支持的二进制字符串类型。


9.4.1 二进制字符串类型概述

MySQL中支持的二进制字符串类型主要包括BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB类型。每种类型的长度和存储空间如表9-10所示。

表9-10 二进制字符串类型长度与占用空间

每种二进制字符串类型所占用的存储空间也是不同的。


9.4.2 BIT类型

BIT类型中,每个值的位数最小值为1,最大值为64,默认的位数为1。BIT类型中存储的是二进制值。

创建数据表t20,t20数据表中包含一个BIT类型的字段b。


mysql> CREATE TABLE t20 (
    -> b BIT(5)
    -> );
Query OK, 0 rows affected (0.02 sec)

向t20表中插入数据2、8、16。


mysql> INSERT INTO t20 (b) VALUES (2), (8), (16);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

查看t20表中的数据。


mysql> SELECT * FROM t20;
+------+
| b    |
+------+
|      |
|      |
|      |
+------+
3 rows in set (0.00 sec)

使用SELECT*FROM t20语句查询出的数据无法查看,这是因为BIT类型存储的是二进制数据。

使用如下语句查询t20表中的数据。


mysql> SELECT BIN(b+0) FROM t20;
+----------+
| BIN(b+0) |
+----------+
| 10       |
| 1000     |
| 10000    |
+----------+
3 rows in set (0.00 sec)

可以看出,已经正确查询出2、8、16的二进制值。其中,查询语句中的b+0(b表示定义的字段名称b)表示将存储的二进制值的结果转化为对应的二进制数字的值。BIN()函数将数字转化为了二进制。

也可以使用如下语句查询t20表中存储的数据。


mysql> SELECT b+0 FROM t20;     
+------+
| b+0  |
+------+
|    2 |
|    8 |
|   16 |
+------+
3 rows in set (0.00 sec)

可以看到,使用b+0查询数据时,可以直接查询出存储的十进制数据的值。

注意:在向BIT类型的字段中插入数据时,一定要确保插入的数据在BIT类型支持的范围内。


9.4.3 BINARY与VARBINARY类型

BINARY类型为定长的二进制类型,当插入的数据未达到指定的长度时,将会在数据后面填充“\0”字符,以达到指定的长度。同时BINARY类型的字段的存储空间也为固定的值。

VARBINARY类型为变长的二进制类型,长度的最小值为0,最大值为定义VARBINARY类型的字段时指定的长度值,其存储空间为数据的实际长度值加1。

创建数据表t21,t21表中有一个BINARY类型的字段b及一个VARBINARY类型的字段vb。


mysql> CREATE TABLE t21 (
    -> b BINARY(10),
    -> vb VARBINARY(10)
    -> );
Query OK, 0 rows affected (0.02 sec)

其中,b字段与vb字段指定的长度均为10。

向t21表中插入数据。


mysql> INSERT INTO t21 (b ,vb) VALUES (10, 10);
Query OK, 1 row affected (0.01 sec)

查询t21表中数据的长度。


mysql> SELECT LENGTH(b), LENGTH(vb) FROM t21;
+-----------+------------+
| LENGTH(b) | LENGTH(vb) |
+-----------+------------+
|        10 |         2  |
+-----------+------------+
1 row in set (0.00 sec)

可以看到,b字段数据的长度为10,vb字段的数据长度为2。说明BINARY类型的字段长度为固定值,为定义字段时指定的字段长度,而VARBINARY类型的字段长度的值是可变的。


9.4.4 BLOB类型

MySQL中的BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB 4种类型,可以存储一个二进制的大对象,比如图片、音频和视频等。

需要注意的是,在实际工作中,往往不会在MySQL数据库中使用BLOB类型存储大对象数据,通常会将图片、音频和视频文件存储到服务器的磁盘上,并将图片、音频和视频的访问路径存储到MySQL中。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。