MySQL中二进制数据的存储与处理(mysql二进制数据)

MySQL中允许存储二进制数据,它们具有可以表达信息并可以具有更小的存储量的特性。在MySQL中二进制数据的存储有3种类型:Blob(Binary Large Object)、Text和Bit Data。

① Blob,也称大型二进制对象,是一种存储二进制数据的有效方法,它用于存储那些不能被文本编辑器直接查看和编辑的文件,如图像、视频和音频。Blob数据由四种文件流格式存储:LONG BINARY, MEDIUM BINARY, TINY BINARY和TINY BLOB。例如,我们可以使用如下语句定义Blob类型:

CREATE TABLE Employee
(Id INT NOT NULL,
Name VARCHAR(40) NOT NULL,
Image BLOB NOT NULL);

② Text,是用于存储基本文本和以字符串格式存储的小型字节的比特数据的一种格式。MySQL中的Text数据分为4类:TINYTEXT,TEXT,MEDIUMTEXT指BLOGR和LONGTEXT。例如,我们可以使用如下语句存储该类型的数据:

CREATE TABLE Employee
(Id INT NOT NULL,
Name VARCHAR(40) NOT NULL,
Resume TEXT NOT NULL);

③ Bit Data,是用来存储位数据,它可以存储最多64位的有符号或无符号的任意位模式。可以使用如下语句定义Bit类型:

CREATE TABLE Customer 
(Id INT NOT NULL,
Name VARCHAR(40) NOT NULL,
Address BIT NOT NULL);

在MySQL中处理此类二进制数据的途径有两个:一是通过MySQL内置函数,如LENGTH()和SUBSTRING();二是通过外部语言操作数据库,如PHP,Perl等。关于MySQL内置函数的用法,LENGTH()函数可以获得BLOB,TEXT和BIT类型中的二进制数据的字节数,例如我们可以计算一个BLOB类型的字节数:

SELECT LENGTH(Image) 
FROM Employee
WHERE Id=1;

SUBSTRING()函数用于分割Blob,Text和Bit类型的二进制数据,例如,我们可以使用SUBSTRING()函数从Blob中提取第一部分:

SELECT SUBSTRING(Image,1,100) 
FROM Employee
WHERE Id=1;

此外,使用外部语言也可以处理MySQL中的二进制数据。下面以PHP为例,介绍如何处理Blob类型的数据:


$db_hostname='localhost';
$db_username='root';
$db_password='';

$con=mysqli_connect($db_hostname,$db_username,$db_password);

if(!$con)
echo "Connection Failed";
else
echo "Connection Established";

$dat_query="SELECT Image FROM Employee WHERE Id=1";
$retrieved_data=mysqli_query($con,$dat_query);
$row=mysqli_fetch_array($retrieved_data,MYSQLI_ASSOC);

header("Content-type: image/jpeg");
echo $row['Image'];
?>

从上述代码可以看出,使用PHP可以从MySQL中提取图像数据并输出该数据,因此,我们可以用PHP在Web上显示图像,媒体文件,以及其他任何二进制数据。

总之,MySQL中允许存储各种类型的二进制数据,但是存储和处理它们的方法和存储和处理普通文本类型的数据是不一样的。MySQL提供了许多内置函数用于处理二进制数据,同时可以使用编程语言(如PHP)处理二进制数据,从而获得更好的处理结果。


数据运维技术 » MySQL中二进制数据的存储与处理(mysql二进制数据)