广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中blob和text数据类型详解
  • 230
分享到

MySQL中blob和text数据类型详解

2024-04-02 19:04:59 230人浏览 安东尼
摘要

目录前言1. blob 类型2. text 类型总结前言 前面文章我们介绍过一些常用数据类型的用法,比如 int、char、varchar 等。一直没详细介绍过 blob 及 tex

前言

前面文章我们介绍过一些常用数据类型的用法,比如 int、char、varchar 等。一直没详细介绍过 blob 及 text 类型,虽然这两类数据类型不太常用,但在某些场景下还是会用到的。本篇文章将主要介绍 blob 及 text 数据类型的相关知识。

1. blob 类型

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

类型可存储大小用途
TINYBLOB0 - 255字节短文本二进制字符串
BLOB0 - 65KB二进制字符串
MEDIUMBLOB0 - 16MB二进制形式的长文本数据
LONGBLOB0 - 4GB二进制形式的极大文本数据

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

2. text 类型

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

类型可存储大小用途
TINYTEXT0 - 255字节一般文本字符串
TEXT0 - 65 535字节长文本字符串
MEDIUMTEXT0 - 16 772 150字节较大文本数据
LONGTEXT0 - 4 294 967 295字节极大文本数据

不过在日常场景中,存储字符串还是尽量用 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_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 中 blob 和 text 数据类型详解的文章就介绍到这了,更多相关MySQL  blob和text 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中blob和text数据类型详解

本文链接: https://www.lsjlt.com/news/138367.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中blob和text数据类型详解
    目录前言1. blob 类型2. text 类型总结前言 前面文章我们介绍过一些常用数据类型的用法,比如 int、char、varchar 等。一直没详细介绍过 blob 及 tex...
    99+
    2022-11-13
  • MySQL中blob和text数据类型怎么用
    今天小编给大家分享一下MySQL中blob和text数据类型怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面...
    99+
    2022-10-19
  • MySQL 中的 BLOB 和 TEXT 数据类型有什么区别?
    BLOB代表Binary Large Objects,顾名思义,它可以用于存储二进制数据,而TEXT用于存储大量字符串。 BLOB可以用来存储二进制数据,这意味着我们还可以存储图片、视频、声音和程序。 例如,下面的图像可以存储为 BLOB,...
    99+
    2023-10-22
  • MySQL使用TEXT/BLOB类型的知识点详解
    一、TEXT和BLOB的区别 TEXT和BLOB家族之间仅有的不同是BLOB类型存储的是二进制数据,没有排序规则或字符集,而TEXT类型有字符集或排序规则。说白了如果要储存中文则选择TEXT。 二、默认值问题 St...
    99+
    2022-05-14
    MySQL TEXT BLOB
  • 详解MySQL中数据类型和字段类型
    目录1. mysql的数据类型 (1)数值型 (2)字符(串)型 (3)日期和时间型 (4)null值 2. mysql的列(字段)类型 2.1数值列类型&nb...
    99+
    2022-09-26
  • 详解jdbc实现对CLOB和BLOB数据类型的操作
    详解jdbc实现对CLOB和BLOB数据类型的操作1、 读取操作CLOB //获得数据库连接 Connection con = ConnectionFactory.getConnection(); con.se...
    99+
    2023-05-31
    jdbc clob blob
  • MySQL TEXT、DATE、SET 数据类型(转)
    MySQL TEXT、DATE、SET 数据类型(转)[@more@]  MySQL 数据表的字段必须有定义一个数据类型。这有大约 25 种选择,大部分都是直接明了的,就不多费口舌了。但有几个有必要提一下。...
    99+
    2022-10-18
  • 【mysql】—— 数据类型详解
    序言: 本期我将大家认识关于 mysql 数据库中的基本数据类型的学习。通过本篇文章,我相信大家对mysql 数据类型的理解都会更加深刻。 目录 (一)数据类型分类 (二)数值类型 1、tinyint类型 2、bit类型 3、小数类型 ...
    99+
    2023-08-31
    mysql 数据库
  • mysql的数据类型详解
    ################################# 分类标准: 分类: 数值数据类型:() 字符串数据类型 日期时间数据类型 json数据类型 空间数据类型   数值数据类型:   整数(精确值): 1)tinyint,占...
    99+
    2017-04-27
    mysql的数据类型详解 数据库入门 数据库基础教程 数据库 mysql
  • mysql中整数数据类型tinyint详解
    目录1.1 tinyint类型说明1.2 实践环境说明1.3 加unsigned属性1.3.1 SQL模式开启严格模式1.3.2 SQL模式未开启严格模式1.4 加zerofill属...
    99+
    2022-11-12
  • 详解MySQL中的数据类型和schema优化
    最近在学习MySQL优化方面的知识。本文就数据类型和schema方面的优化进行介绍。 1. 选择优化的数据类型 MySQL支持的数据类型有很多,而如何选择出正确的数据类型,对于性能是至关重要的。以下几个原则能够帮助...
    99+
    2022-05-19
    MySQL 数据类型 MySQL schema优化
  • 数据库中blob类型如何存取
    在数据库中存取blob类型的数据,可以使用以下方法:1. 通过编程语言的API将blob数据写入数据库。大多数编程语言都提供了API...
    99+
    2023-09-21
    数据库
  • MySQL中JSON字段数据类型详解
    目录前言创建jsON值搜索JSON类型数据在 JSON 和非 JSON 值之间转换JSON 值的汇总总结前言JSON 类型是从 mysql 5.7 版本开始支持的功能,MySQL 支持由RFC 7159定义的本机JSON数...
    99+
    2022-06-14
    mysql的json数据类型 数据库json类型 数据库json字段
  • MySQL数据库的数据类型decimal详解
    在MySQL数据库中,decimal数据类型用于存储精确的小数值。它比其他浮点类型(如float和double)更适合用于存储货币金...
    99+
    2023-09-14
    MySQL
  • mysql 中tinytext、text、mediumtext和longtext详解
    一、数字类型 类型 范围 说明   Char(N) [ binary] N=1~255 个字元 binary :分辨大小写 固定...
    99+
    2020-01-24
    mysql 中tinytext text mediumtext和longtext详解
  • MySQL中tinytext、text、mediumtext和longtext详解
    在MySQL中,有四种不同的文本数据类型:tinytext、text、mediumtext和longtext。它们的主要区别在于存储...
    99+
    2023-09-12
    SQL
  • MySQL 数据类型详情
    目录1、数值类型1.1、数值类型分类1.1.1、浮点数1.1.2、位类型1.1.3、时间日期类型1.1.4、字符串类型1.1.5、ENUM 类型1.1.6、SET类型1、数值类型 1...
    99+
    2022-11-12
  • MySQL入门(二) 数据库数据类型详解
    序言 今天去健身了,感觉把身体练好还是不错的,闲话不多说,把这个数据库所遇到的数据类型今天统统在这里讲清楚了,以后在看到什么数据类型,咱度应该认识,对我来说,最不熟悉的应该就是时间类型这块了。但是通过今天的...
    99+
    2022-10-18
  • MySql数据类型教程示例详解
    目录1.简要概述2. MySQL数据类型详解1) 字符串类型2) 整数类型3)浮点数类型4)日期/时间类型1.简要概述 为什么要开通MySQL这个学习板块呢?因为这是一名数据分析师必...
    99+
    2022-11-12
  • PostgreSQL中json数据类型详解
    目录前言一、PG数据库中jsON的类型1、json和jsonb的区别2、项目开发中的选择3、json数据类型二、PG中json的简单操作1、基础json数据操作2、json和jsonb输出对比3、jsonb包含测试总结前...
    99+
    2023-04-01
    PostgreSQL json类型 json数据类型
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作