数据库中表结构设计是经常会用到int类型,还会加上长度限制,之前不注意,现在将分析记录下来。
mysql 中int(1)和tinyint(1)中的1只是指定显示长度,并不表示存储长度,只有字段指定zerofill时有用。
如int(3),如果实际值是2,如果列指定了zerofill,查询结果就是002,左边用0来填充。
mysql中设置了储存类型后,储存是定长的,也就是说,int(1) 和 int(4) 在硬盘中所占的字节数都是一样的。int类型占4个字节,tinyint占1个字节。int(1) 和 int(4) 从本身长度还是存储方式上都是一样的,区别就是显示的长度不同,但是要设置一个参数:如果列制定了zerofill 就会用0填充显示,int(4)指定后就会显示为0002。
inyint一个字节
smallint 两个字节
mddiumint 三个字节
int 四个字节
显而易见,int(1) 和 tinyint(1) ,在设计数据库的时候应该选择tinyint(1)。所占的储存空间越少越好,当然要够用才行。像这样储存一个 个位数 的字段,还是用tinyint(1)的好。
注意数字类型后面括号中的数字,不表示长度,表示的是显示宽度,这点与 varchar、char 后面的数字含义是不同的。
java中的字节与位数如下,与mysql中一致。
Java基本数据类型
字节的英文为byte,一个字节占8位。
byte占用1个字节,取值范围-128~127
int占用4个字节
long占用8个字节
char占用2个字节