15 mysql tiny/meidum/long blob/text 的数据存储

前言

这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究

探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储

本文主要 的相关内容是 tiny/medium/long blob/text 类类型的相关数据的存储

这部分数据 客户端 和 服务器这边的交互 主要是以字符串的形式交互

服务器这边的存储 为二进制, 主要是本来就是 二进制 或者 将字符串按照给定的编码进行转换为二进制

text 和 blob 类似, 因此 我们这里 仅仅介绍 blob, text 需要根据当前字段编码转换为 字节序列

tinyblob, blob, mediumblob, longblob 的差异主要是可以存储的数据量不相同, 单字节存储长度, 双字节存储长度, 三字节存储长度, 四字节存储长度

mysql 中 blob的服务器客户端的数据交互

测试的 数据表如下

复制代码
CREATE TABLE `tz_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `field1` blob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

INSERT INTO `test`.`tz_test`(`id`, `field1`) VALUES (1, 'boy,girl');

测试脚本如下

复制代码
package com.hx.test07;

/**
 * Test06MysqlTimezone
 *
 * @author Jerry.X.He
 * @version 1.0
 * @date 2023/4/24 16:26
 */
public class Test06MysqlTimezone {

    // Test06MysqlTimezone
    public static void main(String[] args) {

        String url = "jdbc:mysql://10.60.50.16:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=true&useSSL=false";
        String username = "root";
        String password = "root";
        JdbcTemplate jdbcTemplate = Test14GenExpertSql.getMysqlJdbcTemplate(url, username, password);

        String sql = " select * from tz_test; ";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        int x = 0;


    }

}

mysql 是将给定的 blob 的数据以 字节序列的形式 交互给客户端的

mysql 服务器中对应的类型为 BLOB

blob 这边转换, 是从包中获取字节序列

这里是 new byte[] { 0x62, 0x6f, 0x79, 0x2c, 0x67, 0x69, 0x72, 0x6c }

字符串表示为 "boy,girl"

与客户端的交互, 获取给定的 blob, 以目标编码成字符串 响应回去

mysql 服务器 blob的存储

将给定的 utf8mb4_general_ci 的 "gir1l,unknown" 转换为 binary, 然后 之后以二进制的形式存储

记录 带存储的 binary 的长度, 和 数据

blob 的二进制的转换方式如下, 直接取的 来源字符串 以及 来源编码

然后 转换为 binary, 然后 存储给定的 binary

相关推荐
星光一影1 小时前
打车/网约车、代驾、顺风车/拼车、货运、租车等多种出行服务的一站式解决方案
mysql·微信小程序·php·uniapp·html5·web app
Jing_jing_X2 小时前
MySQL Server 启动后到底加载了什么,创建表插入数据到底怎么存的存在哪
mysql·adb
Java水解2 小时前
初识MYSQL —— 基本查询
后端·mysql
星光一影3 小时前
悬赏任务平台/拉新地推系统源码
redis·mysql·小程序·php·uniapp·html5
卡卡酷卡BUG4 小时前
2025年Java面试题及详细解答(MySQL篇)
java·开发语言·mysql
盼哥PyAI实验室5 小时前
Python 正则表达式实战 + 详解:从匹配QQ邮箱到掌握核心语法
python·mysql·正则表达式
IT小哥哥呀5 小时前
MySQL慢查询优化实战:从日志分析到SQL重构全流程
mysql·性能分析·实战项目·数据库调优·sql性能·索引设计·慢查询优化
点心快奔跑6 小时前
超详细Windows系统MySQL 安装教程
数据库·windows·mysql
Neo Wordsworth7 小时前
phpstudy 无法启动mysql 但命令可以启动mysql
mysql·phpstudy
Cikiss7 小时前
图解 MySQL JOIN
数据库·后端·mysql