一起聊聊MySQL中blob和text数据类型(示例详解)


本篇文章我们来看一下mysql中的blob和text数据类型,blob是一个可以存储二进制文件的容器,text类型同char、varchar 类似,都可用于存储字符串,下面我们就一起来看一下这两个数据类型的相关知识,希望对大家有帮助。

一起聊聊MySQL中blob和text数据类型(示例详解)

  1. blob 类型

blob(binary large object) 是一个可以存储二进制文件的容器,主要用于存储二进制大对象,例如可以存储图片,音视频等文件。按照可存储容量大小不同来分类,blob 类型可分为以下四种:

08.png

其中最常用的就是 blob 字段类型了,最多可存储 65KB 大小的数据,一般可用于存储图标或 logo 图片。不过数据库并不适合直接存储图片,如果有大量存储图片的需求,请使用对象存储或文件存储,数据库中可以存储图片路径来调用。

  2. text 类型

text 类型同 char、varchar 类似,都可用于存储字符串,一般情况下,遇到存储长文本字符串的需求时可以考虑使用 text 类型。按照可存储大小区分,text 类型同样可分为以下四种:

09.png

不过在日常场景中,存储字符串还是尽量用 varchar ,只有要存储长文本数据时,可以使用 text 类型。对比 varchar ,text 类型有以下特点:

  • text 类型无须指定长度。

    Trae国内版 Trae国内版

    国内首款AI原生IDE,专为中国开发者打造

    Trae国内版 2045 查看详情 Trae国内版
  • 若数据库未启用严格的 sqlmode ,当插入的值超过 text 列的最大长度时,则该值会被截断插入并生成警告。

  • text 类型字段不能有默认值。

  • varchar 可直接创建索引,text 字段创建索引要指定前多少个字符。

  • text 类型检索效率比 varchar 要低。

下面我们来具体测试下 text 类型的使用方法:

# 创建测试表 字符集是 utf8
mysql> show create table tb_text\G
*************************** 1. row ***************************
       Table: tb_text
Create Table: CREATE TABLE `tb_text` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `a` tinytext,
  `b` text,
  `c` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
# 创建索引测试 发现text类型必须指定前缀长度
mysql> alter table tb_text add index idx_a (a);
ERROR 1170 (42000): BLOB/TEXT column 'a' used in key specification without a key length
mysql> alter table tb_text add index idx_b (b); 
ERROR 1170 (42000): BLOB/TEXT column 'b' used in key specification without a key length
mysql> alter table tb_text add index idx_c (c);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> alter table tb_text add index idx_b (b(10));
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0
# 插入数据测试(repeat函数用于生成重复数据)
# 正常插入
mysql> insert into tb_text  (a,b,c) values (repeat('hello',3),repeat('hello',3),repeat('hello',3));
Query OK, 1 row affected (0.01 sec)
# 插入英文字符超标
mysql> insert into tb_text  (a) values (repeat('hello',52));
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
# 插入中文超标
mysql>  insert into tb_text  (a) values (repeat('你好',100));
Query OK, 1 row affected, 1 warning (0.02 sec)
mysql> show warnings;
+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'a' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
# 查看数据 发现数据有所截取 tinytext 类型最多存储255字节数据
mysql> select * from tb_text;
+----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------+
| id | a | b | c |
+----+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------+
|  1 | hellohellohello | hellohellohello | hellohellohello |
|  2 | hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello | NULL| NULL|
|  3 | 你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你好你| NULL| NULL|
+----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------+
3 rows in set (0.00 sec)

通过以上测试,我们注意到,text 类型可存储容量是以字节为单位而不是字符。例如 tinytext 最多存储 255 个字节而不是 255 个字符,在 utf8 字符集下,一个英文字母或数字占用一个字节,而一个中文汉字占用三个字节。也就是说 tinytext 最多存储 255/3=85 个汉字,text 最多存储 65535/3=21845 个汉字。而 varchar(M) 中的 M 指的是字符数,一个英文、数字、汉字都是占用一个字符,即 tinytext 可存储的大小并不比 varchar(255) 多。

总结:

本篇文章介绍了 blob 及 text 字段类型相关知识。虽然数据库规范中一般不推荐使用 blob 及 text 类型,但由于一些历史遗留问题或是某些场景下,还是会用到这两类数据类型的。这篇文章仅当做个记录了,使用到的时候可以参考下。

推荐学习:mysql视频教程

以上就是一起聊聊MySQL中blob和text数据类型(示例详解)的详细内容,更多请关注其它相关文章!


# 相关知识  # 莱芜网站建设排名  # 党支部网站建设内容  # 萧山区网站优化  # 保定网站网络推广优势  # 魔贝seo流量课程  # seo教程百科网  # 简述网站图片优化技巧  # 光泽网页seo大概费用  # 闵行网站建设策划  # PS联盟网站建设方案  # mysql  # 可分为  # 可用于  # 四种  # 英文  # 是一个  # 国内  # 最多  # 镜像  # 你好 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 《随手记》启用语音备注方法  电脑视频号|直播|如何分享屏幕  Sublime怎么快速复制文件路径_Sublime右键菜单增强技巧  mysql如何管理数据库账户_mysql数据库账户管理技巧  LINUX怎么查看显卡信息_LINUX查看GPU状态  4399正版网页版入口高清直达链接  Golang如何使用gRPC拦截器实现日志收集_Golang gRPC拦截器日志收集实践  《宝可梦大集结》S4冠军之路开始时间介绍  优化Leaflet弹出层图片显示:条件渲染策略  《我的恋爱逃生攻略》中文名字输入方法  申通快递查询 申通物流快递单实时查询入口  Safari浏览器自动填表功能失效怎么办 Safari表单管理修复  CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化  如何在CSS中清除浮动解决背景颜色不包裹内容问题_clear after技巧  Go语言反射机制:如何访问被嵌入结构体遮蔽的方法  CSS过渡与滚动滚动事件结合应用_scroll与transition动画  win11关机几秒又自己开机 Win11关机自动重启问题修复  京东快递包裹信息查询入口 京东快递官方查询平台入口  TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法  Eclipse开发J*a快速入门  J*aScript文本高亮功能优化:解决多词匹配错误与精确分割策略  b站怎么用微信登录_b站微信登录方法  Animex动漫社正版在线入口 Animex动漫社动漫官方观看网  苹果SE如何开启单手模式_苹果SE单手操作功能  服装短视频如何起号推广?服装短视频起号推广有什么要求?  TikTok视频播放不流畅怎么办 TikTok视频播放优化方法  PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】  创建您的便携版VS Code:让配置随身携带  Flexbox布局中Stencil组件宽度不显示问题解析与:host尺寸控制  《杖剑传说》食谱大全  菜鸟驿站的取件码忘了怎么办 手机快速查询指南  如何外贸网站设计-能留住客户提升用户体验!  《大学搜题酱》官网地址登录  如何查询个人病历记录  《大润发优鲜》充值方法介绍  《桃源记2》资源采集攻略  歌词怎么展示在|直播|间视频号?有什么注意事项?  J*aScript调试技巧_性能分析与内存快照  sublime怎么在文件中显示代码结构大纲_sublime符号列表功能  英雄联盟争者留名活动介绍  C#解析来自网络的XML流数据 实时错误处理与重试机制  Chart.js 教程:自定义插件实现图表与图例间距调整  汽水音乐车机版 汽水音乐车机版官方入口  Win10如何彻底关闭OneDrive Win10禁用云同步功能【纯净】  《U校园》学生登录入口2025  Word如何将文字快速转成表格 Word文本转换成表格功能使用技巧【效率】  电脑开不了机怎么办 电脑无法开机的解决方法  获取WooCommerce产品在后台编辑页面的分类ID  《长生:天机降世》火塔小怪大全  PSD转AI文件的简单方法 

 2022-01-13

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.