❮ 上一节

下一节 ❯

MySQL - BLOB 数据类型

MySQL BLOB 数据类型

将数据插入 BLOB 字段

BLOB 数据类型的类型

许多用户应用程序需要存储不同类型的数据,包括文本、图像、文件等。在 MySQL 数据库中使用 BLOB 可以将所有这些类型的数据存储在同一个数据库中,从而无需单独的文件系统。

MySQL BLOB 数据类型

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

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

语法

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

CREATE TABLE table_name (column_name BLOB,...)

示例

让我们考虑一个简单的示例,展示如何将 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;

获取的表结构如下 -

Field

Type

Null

Key

Default

Extra

ID

int

NO

NULL

DEMO_FILE

blob

YES

NULL

将数据插入 BLOB 字段

您可以使用 LOAD_FILE() 函数将文件加载到 BLOB 字段,从而将一些值插入数据库表。但是,在执行此操作之前,请确保满足以下条件 -

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

显示类似 secure_file_priv 的变量;

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

检查"max_allowed_pa​​cket"值 − MySQL 服务器有一个 max_allowed_pa​​cket 变量,用于确定允许加载的最大文件大小。要检查此变量的值,您可以使用以下命令 −

显示类似 max_allowed_pa​​cket 的变量;

确保文件大小不超过此变量指定的值。

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

GRANT FILE ON *.* TO 'username'@'hostname';

FLUSH PRIVILEGES;

文件可读性 − 最后,确保该文件可被 MySQL 服务器读取。

示例

要将值插入到先前创建的表"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 文档等。-

ID

DEMO_FILE

1

0x5468697320697320612073616D706C652066696C65

BLOB 数据类型的类型

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 数据类型的表。

创建包含 TINYBLOB 数据类型的表

在本例中,我们将创建一个名为"demo_tinyblob"的表,并在某个字段上添加 TINYBLOB 数据类型 -

CREATE TABLE demo_tinyblob (ID INT, DEMO_FIELD TINYBLOB);

输出

以下是得到的输出 -

Query OK, 0 rows affected (0.02 sec)

验证

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

DESC demo_tinyblob;

得到的表如下 -

Field

Type

Null

Key

Default

Extra

ID

int

YES

NULL

DEMO_FIELD

tinyblob

YES

NULL

创建 MEDIUMBLOB 数据类型的表

此处,我们使用以下查询创建一个名为"demo_mediumblob"的表,其中包含一个 MEDIUMBLOB 类型的字段 -

CREATE TABLE demo_mediumblob (ID INT, DEMO_FIELD MEDIUMBLOB);

输出

上述代码的输出如下 -

Query OK, 0 rows affected (0.02 sec)

验证

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

DESC demo_mediumblob;

以下是获取到的表 -

Field

Type

Null

Key

Default

Extra

ID

int

YES

NULL

DEMO_FIELD

mediumblob

YES

NULL

创建 LONGBLOB 数据类型的表

在本例中,我们创建一个名为"demo_longblob"的表,其中包含一个 LONGBLOB 类型的字段 -

CREATE TABLE demo_longblob (ID INT, DEMO_FIELD LONGBLOB);

输出

以下是生成的结果 -

Query OK, 0 rows affected (0.02 sec)

验证

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

DESC demo_longblob;

生成的表如下所示 -

Field

Type

Null

Key

Default

Extra

ID

int

YES

NULL

DEMO_FIELD

longblob

YES

NULL

❮ 上一节

下一节 ❯