• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 一起聊聊MySQL中blob和text数据类型(示例详解)

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

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了MySQL数据类型,blob和text数据类型等相关知识,希望对您有所帮助

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


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


1. blob 类型

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


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


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


2. text 类型

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


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


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

text 类型无须指定长度。

若数据库未启用严格的 sqlmode ,当插入的值超过 text 列的最大长度时,则该值会被截断插入并生成警告。

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

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

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

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

# 创建测试表 字符集是 utf8

mysql> show create table tb_text\G*************************** 1. row ***************************       Table: tb_textCreate 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 lengthmysql> alter table tb_text add index idx_b (b); ERROR 1170 (42000): BLOB/TEXT column 'b' used in key specification without a key lengthmysql> alter table tb_text add index idx_c (c);Query OK, 0 rows affected (0.04 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> 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 字段

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 如何解决thinkphp new self()报错问题
  • 用PS制作漂亮的立体3D橙色玻璃RSS Icon图标设计教
  • 浅谈Angular中elem.scope()、elem.isolateScope和$compile(elem)(scope)中scope的区别
  • 设计师应该从四个方面优化网站
  • 分享Laravel模型使用的2个小技巧
  • Photoshop制作超酷的哥特字体教程
  • 如何区分PHP中intval()与(int)
  • 帝国CMS二次开发领号发号功能开发思路
  • WordPress引入Dplayer并使用简码
  • 被遗忘的WordPress模板标签有哪些?

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • ThinkPHP5框架实现多数据库连接
    • 帝国CMS7.5使用TAGSID实现伪静态调用方法
    • 免费网站目录提交网址收集
    • Photoshop使用画笔模拟在水雾玻璃上写字
    • 关于ThinkPHP多表联合查询的常用方法
    • Javascript获取日期的方法是什么
    • 去除织梦CMS后台头部多的一行空白
    • 介绍Laravel unit test : 模拟认证的用户
    • 为kindsoft编辑器替换SyntaxHighlighter代码高亮,整合
    • 详细介绍mysql忘记密码的解决方案及修改密码的三种方式

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有