MySQL存储是十分灵活的,它用于提供多种数据类型的存储。而在这些灵活的数据类型中,有一种数据类型特别强大,就是二进制数据。
二进制数据可以存储复杂类型的文件,比如图片、声音、视频等这些看上去无法直接存储在MySQL中的数据。另外MySQL中二进制数据还可以存储不同类型的原始数据,比如字符串或数字等,以及特殊类型的数据。
MySQL存储二进制数据的方式比较复杂,具体方式如下:
1、使用MySQL的BLOB数据类型来存储二进制数据,可以方便地存储文件或非成绩结构数据,像图片、声音、视频等;
2、使用MySQL的VARBINARY数据类型,这是一种二进制数据类型,可以用来存储二进制数据,比如字符串等。
3、使用MySQL的BIT数据类型来存储二进制数据,可以用来存储特殊类型的数据,如二进制布尔类型。
要注意的是,在使用这些数据类型来存储二进制数据时要小心,因为它们的长度可能比字符串的长度要大得多,这会消耗更多的存储空间,而且处理起来也不太方便。
下面是两个例子,说明二进制数据的存储方式:
例1:将一个文本文件source.txt存储到SQL中
// 定义DB变量及连接
$db = newmysqli(‘localhost’, ‘user’, ‘password’, ‘DBname’);
// 读取文件
$data = file_get_contents(source.txt);
// 查询字符串
$query = “INSERT INTO fileDownloads (data) VALUES (?)”;
// 创建预处理语句
$stmt = $db->prepare($query);
//绑定参数
$stmt->bind_param(‘b’, $data);
// 执行查询
$stmt->execute();
例2:将一个图像文件image.jpg存储到SQL中
// 定义DB变量及连接
$db = newmysqli(‘localhost’, ‘user’, ‘password’, ‘DBname’);
// 读取文件
$data = file_get_contents(image.jpg);
// 查询字符串
$query = “INSERT INTO imageDownloads (data) VALUES (?)”;
// 创建预处理语句
$stmt = $db->prepare($query);
//绑定参数
$stmt->bind_param(‘b’, $data);
// 执行查询
$stmt->execute();
从上面的说明可以看出,MySQL存储的时候,二进制数据实际上是一个变相的存储,也是MySQL可以存储复杂类型文件的用法,所以MySQL成了二进制数据之家,可以说MySQL的灵活性正是由这些数据类型的存在变得更加完善和强大。