14 mysql bit/json/enum/set 的数据存储

news2024/11/19 3:22:51

前言

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

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

本文主要 的相关内容是 bit/json/enum/set 类类型的相关数据的存储  

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

服务器这边的存储 相关的编码之后的整形, json 为字符串 
 

 

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

测试数据表 以及数据如下

CREATE TABLE `tz_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `field1` bit(6) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

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

 

测试脚本如下 

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 是将给定的 bit 的数据以 字符串的形式 交互给客户端的

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

2cd0f3156ad64e61b44bd67a0998751b.png

 

bit 这边转换, 是直接获取的给定的字段对应的 字节序列

这里是 new byte[] { 0x37 }

83c5ed4a21894aae976038d7ed0982e5.png

 

与客户端的交互, 取出存放的 bits 的数据 

然后 拷贝到 val_buffer 响应给客户端, 这里输出了一个 '7' 

017b10e165dd489d97b409af286d339c.png

 

 

mysql 服务器 bit 的存储

是转换为单字节进行存储的  

477943a6549a41a6b575314d78bdc44c.png

 

 

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

和上面 bit 相同 

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

835ce55ef51f4ce986e7d61b18e679c8.png

 

与客户端的交互, 以 my_charset_bin 反序列化为字符串, 格式化为 json 

然后输出 json 字符串到给定的 buf 

6d7d5da51d3c4596b41034d27cf47271.png

 

 

mysql 服务器 json的存储

将给定的 json 的 字符串以 my_charset_bin 序列化为 二进制, 以二进制的形式存储

以下代码 基于 mysql-8.0.23

6a43fe7b0c6a443e8b1a3e16c7e67ac7.png

e6018e19fd5642e2ad35749a475daa20.png

 

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

和上面 bit 相同 

mysql 服务器中对应的类型为 STRING? 为什么不是 ENUM 

b44f31187e1845188fa1bea22c801ab8.png

 

与客户端的交互, 获取当前字段 在枚举的索引, 然后 根据配置的选项列表 获取对应的字符串表示

45b75211e57f465d8ea6581f0b66cc80.png

 

 

mysql 服务器 enum 的存储

根据输入的 枚举字符 获取索引, 然后 存储的是具体的索引

0d2e290afbdd4f73a96a6156ff6a6d0d.png

 

假设输入的字段值 不在枚举列表中, 则存放的是 0, 表示的空字符串

0310debc806941f8a4ac3e998e258719.png

数据的存储是根据索引的值域 按不同的长度进行存储

a24938127ef84ec991da044672f576d9.png

 

 

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

和上面 bit 相同 

mysql 服务器中对应的类型为 STRING? 为什么不是 SET 

acf9a8e7121742368676ef274b3dcfb8.png

 

与客户端的交互, 从当前字段的值中 按照权重 获取相应的字符串表示, 并用 分隔符 连接起来

d3ed814b700a465eb7a1700212ffcbb6.png

 

mysql 服务器 set 的存储

可以看到 boy, girl, unknown 的索引分别为 0, 1, 2, 权重分别为 1, 2, 4

因此 这里存储的 girl, unknown 为 2 + 4 = 6

数据的存储 和上面 enum 一致, 根据存储的值的取值区间 按不同的长度进行存储 

52b6ba161199459e9d2d631e20b62de8.png

 

对于匹配不上的值 这里的处理是 直接过滤掉

299dcbdd87354717b7238bfb03f8ac31.png

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/962252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka环境搭建与相关启动命令

一、Kafka环境搭建 点击下载kafka_2.11-2.3.1.tgz文件链接 1、上传kafka_2.11-2.3.1.tgz&#xff0c;解压kafka_2.11-2.3.1.tgz&#xff0c;得到kafka_2.11-2.3.1文件夹 1&#xff09;上传 #使用mobaxterm将 kafka_2.11-2.3.1.tgz 传入tools文件夹 #用下面代码进入tools文件…

seq2seq与引入注意力机制的seq2seq

1、什么是 seq2seq&#xff1f; 就是字面意思&#xff0c;“句子 到 句子”。比如翻译。 2、seq2seq 有一些特点 seq2seq 的整体架构是 “编码器-解码器”。 其中&#xff0c;编码器是 RNN&#xff0c;并将 最后一个hidden state&#xff08;隐藏状态&#xff09;【即&…

nacos闪退、密码修改等通用问题

问题1&#xff1a;nacos闪退 解决方案&#xff1a;通常是jdk环境变量配置有问题&#xff0c;nacos获取不到环境变量所以闪退。因为nacos的启动文件会获取JAVA_HOME&#xff0c;如果配置的不对&#xff0c;会直接闪退。如图所示&#xff0c;nacos启动文件最开始就是获取环境…

Rust 学习笔记(持续更新中…)

一、 编译和运行是单独的两步 运行 Rust 程序之前必须先编译&#xff0c;命令为&#xff1a;rustc 源文件名 - rustc main.rs编译成功之后&#xff0c;会生成一个二进制文件 - 在 Windows 上还会生产一个 .pdb 文件 &#xff0c;里面包含调试信息Rust 是 ahead-of-time 编译的…

CleanMyMac X和腾讯柠檬清理功能对比区别介绍

Mac电脑的清理软件款式多样&#xff0c;不同软件之间的功能和清理效果各不相同&#xff0c;那么大家的Mac都用什么清理软件呢&#xff1f;小编看了一篇Mac清理软件介绍的知乎&#xff0c;里面大部分评论用户推荐的主要是两款清理软件&#xff1a;CleanMyMac和腾讯柠檬清理软件。…

Linux挖矿程序清除

1. 找到挖矿进程 2.找到病毒的文件地址 ls -l /proc/进程ID/exe3.删除文件命令 rm -rf 文件地址4.杀死挖矿进程 kill -9 进程ID

【教学类-35-01】学号+姓名+班级(描字帖)A4一页

背景说明&#xff1a; 本学期我带机动班&#xff0c;其中大4班去的频率比较高&#xff0c;与是我用大四班的名单做了一份 “描字帖”&#xff0c;在9月1日第一天见面时&#xff0c;孩子们用记号笔描字帖时&#xff0c;我也可以对这些孩子初步混个眼熟&#xff08;聪明的&#x…

0基础学习VR全景平台篇 第95篇:VR实景智慧导航操作手册

一、实景导航前期准备工作及点位采集 &#xff08;一&#xff09;实景导航前期准备工作 &#xff08;1&#xff09;拍摄设备 1.推荐相机&#xff1a;全画幅的佳能 Canon EOS​ 5D Mark IV 2.搭配镜头&#xff1a;原厂的佳能 Canon EF卡口 8-15mm 全画幅鱼眼镜头 3.三角架 …

基于鱼鹰算法优化的BP神经网络(预测应用) - 附代码

基于鱼鹰算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于鱼鹰算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.鱼鹰优化BP神经网络2.1 BP神经网络参数设置2.2 鱼鹰算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…

【JavaEE进阶】Spring事务和事务传播机制

文章目录 一. 什么是Spring事务二. Spring中事务的实现1. Spring编程式事务2. 声明式事务2.1 trycatch下事务不会自动回滚的解决方案2.2 Transactional 作用范围2.3 Transactional 参数说明2.4 Transactional 工作原理 三. 事务的隔离级别1. 事务的四大特性2. Spring中设置事务…

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

前言 这里主要是 由于之前的一个 datetime 存储的时间 导致的问题的衍生出来的探究 探究的主要内容为 int 类类型的存储, 浮点类类型的存储, char 类类型的存储, blob 类类型的存储, enum/json/set/bit 类类型的存储 本文主要 的相关内容是 tiny/medium/long blob/text 类…

基于电气特征分析(ESA)的状态监测是如何实现的?

在现代工业和生产环境中&#xff0c;设备的正常运行和高效性对于维持生产的连续性和质量至关重要。然而&#xff0c;设备的故障和损坏可能会导致生产中断、不必要的维修成本以及生产效率的下降。为了应对这些挑战&#xff0c;状态监测技术已成为工业界的重要工具之一&#xff0…

C++之std::search应用实例(一百八十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Redis数据结构总结

Redis 是一款开源的&#xff0c;内存中的数据结构存储系统&#xff0c;它可以用作数据库、缓存和消息代理。Redis 支持多种类型的数据结构&#xff0c;如字符串&#xff08;String&#xff09;、哈希&#xff08;Hashes&#xff09;、列表&#xff08;Lists&#xff09;、集合&…

45、springboot 文件上传到指定磁盘路径 及 上传成功后的文件回显

需求&#xff1a; 写一个文件上传的功能&#xff0c;把文件上传到指定的文件夹。 然后上传成功后的文件回显 ★ Spring Boot对文件上传提供的自动配置支持 Spring Boot的文件上传自动配置主要由 MultipartAutoConfiguration 和 MultipartProperties 两个类组成。MultipartPro…

linux并发服务器 —— 多线程并发(六)

线程概述 同一个程序中的所有线程均会独立执行相同程序&#xff0c;且共享同一份全局内存区域&#xff1b; 进程是CPU分配资源的最小单位&#xff0c;线程是操作系统调度执行的最小单位&#xff1b; Linux环境下&#xff0c;线程的本质就是进程&#xff1b; ps -Lf pid&…

【方案】基于视频与AI智能分析技术的城市轨道交通视频监控建设方案

一、背景分析 地铁作为重要的公共场所交通枢纽&#xff0c;流动性非常高、人员大量聚集&#xff0c;轨道交通需要利用视频监控系统来实现全程、全方位的安全防范&#xff0c;这也是保证地铁行车组织和安全的重要手段。调度员和车站值班员通过系统监管列车运行、客流情况、变电…

MySQL数据库——多表查询(3)-自连接、联合查询、子查询

目录 自连接 查询语法 自连接演示 联合查询 查询语法 子查询 介绍 标量子查询 列子查询 行子查询 表子查询 自连接 通过前面的学习&#xff0c;我们对于连接已经有了一定的理解。而自连接&#xff0c;通俗地去理解就是自己连接自己&#xff0c;即一张表查询多次。…

Python小知识 - 一致性哈希算法

一致性哈希算法 一致性哈希算法&#xff08;Consistent Hashing Algorithm&#xff09;是用于解决分布式系统中节点增减比较频繁的问题。它的思想是&#xff0c;将数据映射到0~2^64-1的哈希空间中&#xff0c;并通过哈希函数对数据进行映射&#xff0c;计算出数据所在的节点。当…

【LeetCode75】第四十三题 钥匙和房间

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一个数组&#xff0c;表示对应的房间里拥有能开启的对应索引号的钥匙。 一开始我们只能进入0号房间&#xff0c;也就是数组里索引…