边界最近在设计MySQL数据库表的时候,遇到了很多种数字数据,很困惑该用哪种数据类型。之前没特别注意这部分,今天查了一下,分享给大家。在mysql中,精确整数有四种数据类型(不管是
最近在设计MySQL数据库表的时候,遇到了很多种数字数据,很困惑该用哪种数据类型。之前没特别注意这部分,今天查了一下,分享给大家。
在mysql中,精确整数有四种数据类型(不管是不是有点圆):bigint、int、smallint、tinyint。四种用法,长短不一。
存储大小为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”?请在留言板上告诉我。