Mysql 简明教程
MySQL - BLOB
许多用户应用程序需要存储不同类型的数据,包括文本、图像、文件等。在 MySQL 数据库中使用 BLOB 允许您将所有这些类型的数据存储在同一个数据库中,消除了对单独文件系统的需求。
The MySQL BLOB Data Type
MySQL BLOB(二进制大对象)数据类型用于存储二进制数据,例如图像、音频、视频或任何其他类型的二进制文件。BLOB 列可以存储可变长度的二进制数据,这使其适用于处理各种大小的文件。
考虑一个通过表单收集用户信息的应用程序。此信息可能包括姓名和地址等个人详细信息,以及 PAN 卡或 AADHAR 卡等图像证明。您可以将这些文件存储为 MySQL 数据库中的 BLOB,而不是在文件系统中单独管理它们。
Inserting Data into BLOB Fields
您可以在文件中加载到 BLOB 字段中,从而将一些值插入到数据库表中。但是,在这样做之前,请确保满足以下条件:
-
* 文件存在 -*要插入的文件必须位于 MySQL 服务器主机位置。要确定所需的位置,您可以使用以下命令和 secure_file_priv 变量。如果此命令的结果不为空,则必须将要加载的文件放在该特定目录中。
-
Specify Full File Path − 使用 LOAD_FILE() 函数时,必须将文件的完整路径作为参数传递,例如 '/users/tutorialspoint/file_name.txt'。对于 Windows 用户,请记住在路径中使用双反斜杠作为转义字符('//users//tutorialspoint//file_name.txt')。
-
Check 'max_allowed_packet' Value − MySQL Server 有一个 max_allowed_packet 变量,它确定可以加载的最大文件大小。要检查此变量的值,可以使用以下命令:
-
Grant FILE Privileges − 确保 MySQL 用户帐户具有已授予的文件权限。要向用户授予文件权限,可以使用以下命令(通常由具有管理权限的用户(例如 'root')执行):
-
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 数据类型:
-
TINYBLOB − 它最多可以存储 255 个字节或 255 个字符。
-
BLOB − 它最多可以存储 65,535 (216 - 1) 个字节,相当于 64KB 的数据。
-
MEDIUMBLOB − 它最多可以存储 16,777,215 (224 - 1) 个字节或 4GB。
-
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);
Creating a Table with MEDIUMBLOB Datatype
在这里,我们使用以下查询创建一个表,名为“demo_mediumblob”,其中包含 MEDIUMBLOB 类型的字段:
CREATE TABLE demo_mediumblob (ID INT, DEMO_FIELD MEDIUMBLOB);