int,smallint,tinyint,bigint mysql中int和bigint区别

边界最近在设计MySQL数据库表的时候,遇到了很多种数字数据,很困惑该用哪种数据类型。之前没特别注意这部分,今天查了一下,分享给大家。在mysql中,精确整数有四种数据类型(不管是

本文最后更新时间:  2023-02-23 06:57:47

边界

最近在设计MySQL数据库表的时候,遇到了很多种数字数据,很困惑该用哪种数据类型。之前没特别注意这部分,今天查了一下,分享给大家。


在mysql中,精确整数有四种数据类型(不管是不是有点圆):bigint、int、smallint、tinyint。四种用法,长短不一。


一. bigint

存储大小为8个字节、长度从-2 ^ 63(-922372036854775808)到2 ^ 63-1(922372036854775807)的整数数据(所有数字)。

myBatis和JPA中生成实体类型是引用类型Long。

对应Java中的基本数据类型long,Long,long integer)占用内存64位,即8 bytes-2 63 ~ 2 63-1,默认值为0L(尽量用大写的L表示长整数,不要用小写的“L”,因为在IDE中区分小写的“L”和“1”有点傻)。

Ps: bigint已经有长度了。mysql表中的长度就是用于显示的位数。

第二,int

存储大小为4字节、长度从-2 ^ 31(-2,147,483,648)到2 ^ 31–1(2,147,483,647)的整数数据(所有数字)。

myBatis和JPA中生成实体类型是引用类型Integer。

对应Java中的基本数据类型int,int (integer)占用32位,即4个字节,取值范围-2147483648~2147483647,默认值为0。

第三,smallint

存储从-2 ^ 15(-32,768)到2 ^ 15–1(32,767)的2字节整数数据。

myBatis和JPA中生成实体类型是引用类型Short。

对应Java中的基本数据类型short,Short,short integer)占用内存16位,即2字节,取值范围-32768~32717,默认值为0。

四。tinyint

存储从0到255的大小为1字节的整数数据。

myBatis和JPA中生成实体类型是引用类型Byte。

对应基本数据字节,Java中的byte,byte是Java中最需要的数据类型,在内存中占8位(即1字节)。取值范围为-128~127,默认值为0。

摘要

其实仔细观察以上四种类型,会发现一定的规律。Bigint、int、smallint、tinyint分别占用8、4、2、1个字节,每个字节占用8位内存。那么如何计算它们的长度呢?

Bigint:从-2 (8 * 8-1)到2(8 * 8-1)-1;

Int:从-2 (4 * 8-1)到2(4 * 8-1)-1;

Smallint:从-2 (2 * 8-1)到2(2 * 8-1)-1;

短:从-2 (1 * 8-1)到2(1 * 8-1)-1;

你发现没有规律,只要看一下,就能很容易记住每种类型的长度。

请注意,每个计算公式的末尾都有“-1”。为什么是“-1”?请在留言板上告诉我。

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。