Mysql 简明教程

MySQL - BLOB

许多用户应用程序需要存储不同类型的数据,包括文本、图像、文件等。在 MySQL 数据库中使用 BLOB 允许您将所有这些类型的数据存储在同一个数据库中,消除了对单独文件系统的需求。

The MySQL BLOB Data Type

MySQL BLOB(二进制大对象)数据类型用于存储二进制数据,例如图像、音频、视频或任何其他类型的二进制文件。BLOB 列可以存储可变长度的二进制数据,这使其适用于处理各种大小的文件。

考虑一个通过表单收集用户信息的应用程序。此信息可能包括姓名和地址等个人详细信息,以及 PAN 卡或 AADHAR 卡等图像证明。您可以将这些文件存储为 MySQL 数据库中的 BLOB,而不是在文件系统中单独管理它们。

Syntax

以下是为表字段分配 BLOB 数据类型的基本语法 -

CREATE TABLE table_name (column_name BLOB,...)

Example

让我们考虑一个基本示例,以显示如何为表字段分配 BLOB 数据类型。在这里,我们正在创建一个名为“demo_table”的表,其中包含两个字段“ID”和“DEMO_FILE” -

CREATE TABLE demo_table (
   ID INT NOT NULL,
   DEMO_FILE BLOB
);

以下是所获得的输出 −

Query OK, 0 rows affected (0.01 sec)

您可以使用以下命令查看表结构:

DESC demo_table;

获得的表如下 −

Inserting Data into BLOB Fields

您可以在文件中加载到 BLOB 字段中,从而将一些值插入到数据库表中。但是,在这样做之前,请确保满足以下条件:

  1. * 文件存在 -*要插入的文件必须位于 MySQL 服务器主机位置。要确定所需的位置,您可以使用以下命令和 secure_file_priv 变量。如果此命令的结果不为空,则必须将要加载的文件放在该特定目录中。

  2. Specify Full File Path − 使用 LOAD_FILE() 函数时,必须将文件的完整路径作为参数传递,例如 '/users/tutorialspoint/file_name.txt'。对于 Windows 用户,请记住在路径中使用双反斜杠作为转义字符('//users//tutorialspoint//file_name.txt')。

  3. Check 'max_allowed_packet' Value − MySQL Server 有一个 max_allowed_packet 变量,它确定可以加载的最大文件大小。要检查此变量的值,可以使用以下命令:

  4. Grant FILE Privileges − 确保 MySQL 用户帐户具有已授予的文件权限。要向用户授予文件权限,可以使用以下命令(通常由具有管理权限的用户(例如 'root')执行):

  5. File Readability − 最后,请确保 MySQL 服务器可以读取文件。

Example

要将值插入到先前创建的表“demo_table”中,可以使用以下 INSERT 查询:

INSERT INTO demo_table
VALUES(1,
LOAD_FILE("C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\sample.txt"));

要验证插入,可以使用以下查询从“demo_table”中检索数据:

SELECT * FROM demo_table;

我们可以在下面的输出中看到,表包含“sample.txt”文件中内容的十六进制字符串。您可以将任何类型的文件加载到 MySQL 中,例如图像、多媒体文件、PDF 文档等。

Types of BLOB Datatype

MySQL 提供了四种类型的 BLOB 数据类型,每种类型都具有不同的最大存储容量。虽然它们都用于存储二进制数据(例如图像或文件),但它们所能容纳的对象的最大大小不同。以下是四种 BLOB 数据类型:

  1. TINYBLOB − 它最多可以存储 255 个字节或 255 个字符。

  2. BLOB − 它最多可以存储 65,535 (216 - 1) 个字节,相当于 64KB 的数据。

  3. MEDIUMBLOB − 它最多可以存储 16,777,215 (224 - 1) 个字节或 4GB。

  4. LONGBLOB − 它在这些数据类型中最大,并且可以存储多大 4,294,967,295 个字节 (232 - 1) 或 4GB 的对象。

让我们尝试创建所有上述 BLOB 数据类型类型的表。

Creating a Table with TINYBLOB Datatype

在此示例中,我们在字段上使用 TINYBLOB 数据类型创建名为“demo_tinyblob”的表:

CREATE TABLE demo_tinyblob (ID INT, DEMO_FIELD TINYBLOB);

Output

以下是所获得的输出 −

Query OK, 0 rows affected (0.02 sec)

Verification

您可以使用以下命令查看表结构:

DESC demo_tinyblob;

获得的表如下 −

Creating a Table with MEDIUMBLOB Datatype

在这里,我们使用以下查询创建一个表,名为“demo_mediumblob”,其中包含 MEDIUMBLOB 类型的字段:

CREATE TABLE demo_mediumblob (ID INT, DEMO_FIELD MEDIUMBLOB);

Output

上述代码的输出如下:

Query OK, 0 rows affected (0.02 sec)

Verification

您可以使用以下命令查看表结构:

DESC demo_mediumblob;

以下是要获得的表:

Creating a Table with LONGBLOB Datatype

在这种情况下,我们使用 LONGBLOB 类型的字段创建名为“demo_longblob”的表 −

CREATE TABLE demo_longblob (ID INT, DEMO_FIELD LONGBLOB);

Output

以下是产生的结果:

Query OK, 0 rows affected (0.02 sec)

Verification

可以使用以下命令查看表结构 −

DESC demo_longblob;

所生成的表如下所示: