当前位置: 首页 > news >正文

10 mysql tiny/small/medium/big int 的数据存储

前言

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

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

本文主要 的相关内容是 int 类类型的相关数据的存储  

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

服务器这边的存储 主要是 单字节存储, 双字节存储, 三字节存储, 四字节存储, 八字节存储 

 

 

mysql类型 和 java类型对应

驱动的 ResultSetImpl 获取数据的时候有一层封装 

因此不管是 tinyint, smallint, medinumint, int 在业务代码上面获取到的都是 Integer 接收 

unsigned_int 因为 java 中 int 已经覆盖不了值域, 因此使用了 long 来接受 

bigint 对应于类型 long 接收 

unsigned_bigint 和上面 unsigned_int 同理, 使用了 BigInteger 接收 

decimal, unsigned_bigdecimal 使用了 BigDecimal 接收 

float, double 使用 Float, Double 接收 

f1aa673571dc409ab43604724a50d6ad.png

 

 

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

创建表 以及插入测试数据

CREATE TABLE `tz_test` (`id` int(11) NOT NULL AUTO_INCREMENT,`field1` tinyint(4) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8INSERT INTO `test`.`tz_test`(`id`, `field1`) VALUES (1, '122');

 

测试脚本如下 

package com.hx.test07;/*** Test06MysqlTimezone** @author Jerry.X.He* @version 1.0* @date 2023/4/24 16:26*/
public class Test06MysqlTimezone {// Test06MysqlTimezonepublic 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 是将给定的 tiny int 的数据以 字符串的形式 交互给客户端的

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

cb51a284052f497e9b2ea0d781660e0d.png

 

与客户端的交互, 将给定的 tinyint 转换为 十进制 的字符串表示, 然后 响应回去

因为是数字在大多数的编码中都是相同的, 所以这里 my_charset_numeric 直接在 mysql 中定义的是 my_charset_latin1

d006e69cb99a4f6e91b83f29d4f81b63.png

 

 

mysql服务器 中 tinyint 数据存储 

以单字节存储, 可以分为 无符号 和 有符号

这里可以看出, 如果你设置的数字超出了 单字节 可以表示的数据的值域, mysql 会将值调整为边界, 比如如下 语句, 会将 field1 更新为 127

update tz_zone set field1 = 399 where id = '1';

6e126d1d8f3f4720b630c738292c4d63.png

 

 

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

和上面 tinyint 相同 

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

772c0bbdfbb14a60be26a6b426ed529a.png

 

与客户端的交互 的转换 和 tinyint 的处理类似 

 

 

mysql 服务器 smallyint 的存储

以双字节存储, 可以分为 无符号 和 有符号

这里可以看出, 如果你设置的数字超出了 单字节 可以表示的数据的值域, mysql 会将值调整为边界, 比如如下 语句, 会将 field1 更新为 32767

update tz_zone set field1 = 399999999 where id = '1';

dc5294bff4a84acca17e1d5f9215559e.png

 

 

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

和上面 tinyint 相同 

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

0b29647892094dc5956e05a3da6037fe.png 

与客户端的交互 的转换 和 tinyint 的处理类似 

 

 

mysql 服务器 mediumint 的存储

以三字节存储, 可以分为 无符号 和 有符号

这里可以看出, 如果你设置的数字超出了 单字节 可以表示的数据的值域, mysql 会将值调整为边界, 比如如下 语句, 会将 field1 更新为 8388607

update tz_zone set field1 = 399999999 where id = '1';

d4be8835d75543eab01d6c4d92165165.png

 

 

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

和上面 tinyint 相同 

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

4da9c41d43094091addc76516de937f2.png

 

与客户端的交互 的转换 和 tinyint 的处理类似 

 

 

mysql 服务器 int 的存储

以四字节存储, 可以分为 无符号 和 有符号

这里可以看出, 如果你设置的数字超出了 单字节 可以表示的数据的值域, mysql 会将值调整为边界, 比如如下 语句, 会将 field1 更新为 2147483647

update tz_zone set field1 = 39999999999999 where id = '1';

667d35d2a66240248a3b7ff8f4e5d2b4.png

 

 

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

 

和上面 tinyint 相同 

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

130ae6c67b3c420a90b40832e28fe40e.png

 

与客户端的交互 的转换 和上面同理, 获取到 longlong, 然后再基于 longlong10_to_str 转换为 字符串表示 

5d640aa8b14d46089ad1c95a6ef1e9d4.png

 

 

mysql 服务器 bigint 的存储

将传入的 longlong 转换为 longlong, 然后以八字节存储 

b7cf359e7de44899bd4e6fbbd2f85ea9.png

 

 

 

 

 

http://www.lryc.cn/news/154961.html

相关文章:

  • UI自动化测试之Jenkins配置
  • 电视盒子什么品牌好?数码博主盘点目前性能最好的电视盒子
  • 对于枚举类型的输出
  • solidity开发环境配置,vscode搭配remix
  • chatGPT生成代码--go组合算法
  • 推荐6款普通人搞副业做自媒体AI工具
  • vs中git提交合并分支的步骤记录
  • PostgreSQL 备份恢复:pg_probackup
  • 博客程序系统其它功能扩充
  • MATLAB 2023安装方法之删除旧版本MATLAB,安装新版本MATLAB
  • 全国唯一一所初试考Java的学校!平均300分拿下
  • day35 | 860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球
  • ffmpeg批量转码
  • 时序预测 | MATLAB实现基于QPSO-BiLSTM、PSO-BiLSTM和BiLSTM时间序列预测
  • 【TypeScript学习】—基本类型(二)
  • uni-app点击复制指定内容(点击复制)
  • 无涯教程-Flutter - 简介
  • 【STM32】学习笔记-时间戳RTC
  • 绿色能源迎来跨越式增长新时代
  • 【算法】函数渐近的界基础知识及定理
  • stable diffusion实践操作-writing
  • idea查找maven所有依赖
  • 【业务功能篇97】微服务-springcloud-springboot-电商购物车模块-获取当前登录用户的购物车信息
  • Shell常用的几个正则表达式:[:alnum:], [:alpha:], [:upper:], [:lower:], [:digit:] 认知
  • 简单的爬虫代码 爬(豆瓣电影)
  • 微服务之架构演变
  • 面试问题记录一 --- C++(Qt方向)
  • 使用词袋模型(BoW)测试提取图像的特征点和聚类中心
  • 利用vba处理Excel表格数据实现键值转化,适用于将编码转化成对应的文本
  • IntelliJ IDEA(Windows 版)的所有快捷键