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

这篇具有很好参考价值的文章主要介绍了10 mysql tiny/small/medium/big int 的数据存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

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

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

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

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

 文章来源地址https://www.toymoban.com/news/detail-689440.html

 

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 接收 

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

 

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=utf8

INSERT 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 {

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

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

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

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

 

mysql服务器 中 tinyint 的数据存储 

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

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

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

 

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

和上面 tinyint 相同 

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

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

 

 

mysql 服务器 smallyint 的存储

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

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

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

 

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

和上面 tinyint 相同 

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint 

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

 

 

mysql 服务器 mediumint 的存储

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

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

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

 

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

和上面 tinyint 相同 

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

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

 

 

mysql 服务器 int 的存储

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

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

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

 

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

 

和上面 tinyint 相同 

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

 

mysql 服务器 bigint 的存储

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

10 mysql tiny/small/medium/big int 的数据存储,12 mysql,mysql,tinyint,int,bigint

 

 

 

 

 

到了这里,关于10 mysql tiny/small/medium/big int 的数据存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度剖析数据在内存中的存储——int类型(整型)和float类型(浮点数)在内存中是如何存储和使用的?

    众所周知,C语言中有几种基本的内置数据类型: char - 字符数据类型 short - 短整型 int - 整型 long - 长整型 long long - 更长的整型 float - 单精度浮点数 double - 双精度浮点数 那为什么要设置这么多内置数据类型呢?类型的意义是什么? 本文将为大家介绍整型和浮点数在内存中的存

    2023年04月22日
    浏览(36)
  • 【动态规划】12简单多状态dp问题_打家劫舍II_C++ (medium)

    题目链接:leetcode打家劫舍II 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目让我们求 在不触动警报装置的情况下  ,能够偷窃到的最高金额。 由题可得: 第一个房屋和最后一个房屋是紧挨着的 如果两间相邻的房屋在同一晚

    2024年02月02日
    浏览(37)
  • MySQL_10 存储引擎和视图

    目录 一、存储引擎         1.介绍 :          2.分类 :          3.选择 :  二、视图         1.概述 :          2.原理 :          3.使用格式 :          4.代码演示 :          5.应用实例 :          MySQL的表类型由表的存储引擎(Storage Engines)决定 , 主要包括InnoD

    2024年02月07日
    浏览(19)
  • MySQL高级10-InnoDB引擎存储架构

    表空间(Tablespace):一个mysql实例,及一个数据库实例,可以对应多个表空间(ibd文件),用于存储记录,索引等数据。 段(Segment):分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点(Leaf node segment),

    2024年02月08日
    浏览(29)
  • int(1) 和 int(10)区别

    有个表的要加个user_id字段,user_id字段可能很大, alter table xxx ADD user_id int(1)。 int(1)怕是不够用吧,接下来是一通解释。 我们知道在mysql中 int占4个字节,那么对于无符号的int,最大值是2^32-1 = 4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗? id字段为无符号的

    2023年04月14日
    浏览(20)
  • Cilium系列-10-启用 IPv6 BIG TCP和启用巨帧

    Cilium 系列文章 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing) 完全替换 KubeProxy IP 地址伪装(Masquerading)切换为基于

    2024年02月14日
    浏览(32)
  • mysql 学习存储过程:一次插入 10W 条记录、卡死了怎么办

    所有的存储过程必须有前缀“proc_”,所有的系统存储过程都有前缀“sp_”。 输入参数以i_开头,输出参数以o_开头。 mysql use test_20230414; mysql CREATE TABLE person ( id int NOT NULL AUTO_INCREMENT, name varchar(15) NOT NULL, PRIMARY KEY ( id ) ) ENGINE=InnoDB AUTO_INCREMENT=10001 ; 使用事务 不使用事务 查询存

    2024年02月01日
    浏览(34)
  • 全球首发:Tiny10 2023 x86最终版及类似win10精简版/Win K/N版 单独添加Windows Media Player功能

    情况: 1.Windows功能列表中没有媒体功能(Media Features),或该项下没有Windows media player选项 2.普通在Windows-设置-功能-可选功能中单独可以添加WMP,但实际并无效果,该组件需要相关功能包打开情况下才可以安装成功,否则尽管显示已安装,但实际Program目录下并无Windows Media

    2023年04月25日
    浏览(31)
  • 创建了一个名为nums_list的vector容器,其中存储了一系列的pair<int, int>

    在上述代码中,我们首先创建了一个整数数组 nums ,其中包含了一些整数。然后,我们创建了一个空的 nums_list 容器。接下来,我们使用 for 循环遍历整数数组 nums ,并将每个数组元素和其对应的索引作为一个 pair 对象加入到 nums_list 容器中。最后,我们遍历 nums_list 容器,并

    2024年02月07日
    浏览(33)
  • 【TOD_small_ MySQL - The Basics // Learn SQL in 23 Easy Steps】

    https://youtu.be/Cz3WcZLRaWc?si=KcQx5r9mS0WPTVQU   Relational databases using SQL are king, in my recent poll nearly two-thirds of viewers saids

    2024年01月19日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包