千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > MySQL的mediumblob

MySQL的mediumblob

来源:千锋教育
发布人:xqq
时间: 2023-11-24 16:22:32 1700814152

一、mediumblob是什么

在MySQL中,mediumblob是一种二进制数据类型,它允许存储最大16MB的数据。它是blob数据类型系列中的一员,blob数据类型又包括:tinyblob、blob、mediumblob和longblob。

mediumblob常常用于存储一些媒体文件,例如图片、音频、视频等等,具有较好的可扩展性。但由于存储空间受限,对于超过16MB的大型文件,建议采用文件服务或者分布式文件存储系统。

二、如何创建mediumblob类型的列

在MySQL中创建mediumblob类型的列非常简单,也可以使用默认值和null值。


CREATE TABLE demo_table (
  id INT(11) NOT NULL AUTO_INCREMENT,
  content mediumblob DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

三、如何读写mediumblob类型的数据

使用INSERT语句可以将二进制数据存入mediumblob列,使用SELECT语句将二进制数据从mediumblob列中获取。


-- 将二进制数据存入mediumblob列
INSERT INTO demo_table (content) VALUES(Load_file('path/to/file.jpg'));

-- 从mediumblob列中获取二进制数据
SELECT content FROM demo_table WHERE id=1;

注意:

1. 在LOAD_FILE函数内部,path/to/file.jpg需要输入绝对路径,如果文件不存在或者没有权限打开,则INSERT会失败。

2. 在写入或者读取二进制数据时,需要进行二进制安全的操作。


-- 写入二进制数据的例子
$fp = fopen("path/to/file.jpg", 'rb');
$fileData = fread($fp, filesize("path/to/file.jpg"));
fclose($fp);
$stmt = $pdo->prepare("INSERT INTO demo_table (content) VALUES(:content)");
$stmt->bindParam(':content', $fileData, PDO::PARAM_LOB);
$stmt->execute();

-- 读取二进制数据的例子
$stmt = $pdo->prepare("SELECT content FROM demo_table WHERE id=1");
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
$content = $result['content'];
header("Content-Type: image/jpeg");
echo $content;

四、mediumblob类型的应用场景

由于mediumblob类型的特性,它在一些特定的应用场景中能够起到很好的作用:

存储小型文件:例如用户头像、店铺Logo等等。 存储二进制序列化数据:如序列化的多维数组、对象等等。 存储业务无关的二进制数据:不同于存储实时生成的二进制数据,例如通过爬虫抓取的图片等等。

五、总结

mediumblob是一种非常实用的MySQL数据类型,在二进制数据存储方面具有优秀的表现。同时,我们需要了解如何正确读写mediumblob数据,使其更好地服务于我们的应用。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT