理解误区1
在最初学习Java和MySQL的时,一直使用的是Boolean来接受tinyint类型的数据。具体操作:在数据库中设置TINYINT(1),存储0和1;在Java中使用boolean来接受,0代表false,1代表true。在潜意识中一直以为MySQL的tinyint对应Java的Boolean,其实这个是错误的。
直到后来使用tinyint存不是0和1的数之后,才考虑到Java应该用什么类型接收,才明白之前的那个“潜意识”是错误的。
tinyint用java的什么类型来接收?
tinyint 可以使用int来接受也可以用boolean来接受。
因为数据库并没有boolean这个类型,所以可以使用tinyint来代替,0代表false,1代表true。
理解误区2
之前总是使用TINYINT(1)来存储0和1的数据,“(1)”虽是显示长度,但是总感觉可以节省空间。其实这是错误的,是和varchar弄混淆了。
tinyint(1) 与tinyint(4)的区别?
tinyint默认的位数是4位,但是我们设计数据库就算设计成tinyint(1),也不能影响它占了4个存储空间。
tinyint(1) 和 tinyint(4)中的1和4只有字段指定zerofill是有用,用0来填充,而且需要去指定zerofill才行。
其实他们的存储空间是一样的。
如tinyint(4),如果实际值是2,如果列指定了zerofill,查询结果就是0002,左边用0来填充。