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.hqwc.cn/news/98250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

气象站是什么设备?功能是什么?

气象站是一种用于测量和记录气象数据的设备。它通常是由各种传感器及其数据传输设备、固定设备和供电设备组成&#xff0c;可以测量风速、风向、温度、湿度、气压、降水量等气象要素&#xff0c;并将这些数据记录下来&#xff0c;以便进一步分析和研究。 气象站通常设置在广阔…

【U盘】实现U盘清空并重置恢复存储

打开电脑&#xff0c;将U盘插入USB端口&#xff0c;点按快捷键【WinR】&#xff0c;弹出运行对话框&#xff0c;输入命令 diskpart 进入命令提示符窗口 输入指令 list disk 查看现在的硬盘 这里显示的U盘编号是“1”&#xff0c;因此输入select disk “1”&#xff0c;就是选择…

CS420 课程笔记 P3 - 计数系统基础和 Hex, Decimal, Binary 进制

文章目录 IntroductionInspirationWhy base systemsBinary & HexCounting in binaryAdditional resources Introduction 笔记作者 tips&#xff1a;这一节是关于进制的讲解&#xff0c;推荐观看原视频或学会二进制的读者跳过这一篇&#xff01; 本节课将介绍基本的计算机系…

动态规划:路径和子数组问题(C++)

动态规划&#xff1a;路径和子数组问题 路径问题1.不同路径&#xff08;中等&#xff09;2.不同路径II&#xff08;中等&#xff09;3.下降路径最⼩和&#xff08;中等&#xff09;4.地下城游戏&#xff08;困难&#xff09; 子数组问题1.最大子数组和&#xff08;中等&#xf…

无涯教程-JavaScript - MINUTE函数

描述 MINUTE函数返回时间值的分钟。分钟以整数形式给出,范围为0到59。 语法 MINUTE (serial_number)争论 Argument描述Required/OptionalSerial_number 您想要找到的包含分钟的时间。 可以输入时间 作为引号内的文本字符串(如" 6:45 PM") 为十进制数字(如0.7812…

JVM垃圾回收机制和常用算法(简洁版)

垃圾收集 (Garbage Collection,GC) 垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的&#xff0c;只存在于线程的生命周期内&#xff0c;线程结束之后就会消失&#xff0c;因此不需要对这三个区域进行垃圾回收。 判断一个对象是…

基本介绍——数据挖掘

1.数据挖掘的定义 数据挖掘是采用数学的、统计的、人工智能和神经网络等领域的科学方法&#xff0c;如记忆推理、聚类分析、关联分析、决策树、神经网络、基因算法等技术&#xff0c;从大量数据中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势&#xff0c;并…

基于Springcloud的基础框架,统一gateWay网关鉴权demo,附下载地址

基于Springcloud的基础框架&#xff0c;统一gateWay网关鉴权demo&#xff0c;附下载地址 使用方式&#xff1a; 1、搭建nacos环境&#xff0c;修改对应nacos地址 2、修改mysql地址,导入sql语句 ###框架内容 SpringcloudGatewayJWTNacosFeginmysqlMybatis plus 具体功能 基于…

Swift 周报 第三十六期

文章目录 前言新闻和社区消息称苹果公司和印度财政部官员磋商&#xff0c;扩大在印度的制造产能iPhone 15 Pro 机型新增泰坦灰iPhone 15 全系配 USB-C 苹果拒绝接口和安卓互通 提案正在审查的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组整理周报的第三十…

为什么良好的客户服务对于成功的企业至关重要

图片来源于&#xff1a;SaleSmartly官网 良好的客户服务是任何成功企业的重要组成部分。提供卓越的客户服务有助于建立客户的信任和忠诚度&#xff0c;从而增加销售额和利润。它还对任何企业的声誉产生积极影响&#xff0c;带来更多客户和更好的口碑推荐。因此&#xff0c;企业…

说说 TCP的粘包、拆包

分析&回答 拆包和粘包是在socket编程中经常出现的情况&#xff0c; 在socket通讯过程中&#xff0c;如果通讯的一端一次性连续发送多条数据包&#xff0c;tcp协议会将多个数据包打包成一个tcp报文发送出去&#xff0c;这就是所谓的粘包。如果通讯的一端发送的数据包超过一…

OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理

前言&#xff1a;在部分大厂笔试时经常会使用OJ题目&#xff0c;这里对《华为机试》和《剑指offer》中的部分题目进行思路分析和讲解&#xff0c;希望对各位读者有所帮助。 题目来自牛客网&#xff0c;欢迎各位积极挑战&#xff1a; HJ73:计算日期到天数转换_牛客网 JZ17:打印…