1. 程式人生 > 資料庫 >理解誤區——mysql中tinyint與Java的資料型別的對應關係;tinyint(1) 與tinyint(4)的區別

理解誤區——mysql中tinyint與Java的資料型別的對應關係;tinyint(1) 與tinyint(4)的區別

理解誤區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來填充。