tinyint(1)詳解


 

stock_number  tinyint(1)   如果stock_number此時的值是127,當庫存+1的時候,就會超過int的最大范圍(error: Data truncation: Out of range value for column 'stock_total' at row 1)

類型             最小值               最大值      占用字節 
tinyint       -128          127        1      
smallint       -32768         32767        2      
mediumint     -8388608         8388607       3     
int/integer   -2147483648       2147483647       4      
bigint      -9223372036854775808   9223372036854775807    8      

 1 bytes = 8 bit ,一個字節最多可以代表的數據長度是2的8次方 11111111 在計算機中也就是 -128到127


https://www.cnblogs.com/totian/p/7065123.html
————————————————————————————————————————————————
 
tinyint 型的字段如果設置為unsigned類型,只能存儲從0到255的整數,不能用來儲存負數。
tinyint 型的字段如果不設置unsigned類型,存儲-128到127的整數。
1個tinyint型數據只占用一個字節;一個INT型數據占用四個字節。
這看起來似乎差別不大,但是在比較大的表中,字節數的增長是很快的。
 
        
    tinyint(1)與tinyint(2)的區別可以從下面看出來:

CREATE TABLE `test` (                                  
      `id` int(11) NOT NULL AUTO_INCREMENT,                
      `str` varchar(255) NOT NULL,                                     
      `state` tinyint(1) unsigned zerofill DEFAULT NULL,   
      `state2` tinyint(2) unsigned zerofill DEFAULT NULL,  
      `state3` tinyint(3) unsigned zerofill DEFAULT NULL,  
      `state4` tinyint(4) unsigned zerofill DEFAULT NULL,  
      PRIMARY KEY (`id`)                                   
    ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8  
 
insert into test (str,state,state2,state3,state4) values('csdn',4,4,4,4);
select * from test;
結果:
id   str   state   state2   state3   state4 
1    csdn  4        04       004     0004 
 
於是在dll里面channel` tinyint(2) unsigned zerofill DEFAULT ‘00’

問題來了,2指的是存儲寬度,不表示存儲長度。如果列制定了zerofill 就會用0填充顯示,例如tinyint(2)指定后2就會顯示為02,自動左邊補零。
 https://blog.csdn.net/ahjxhy2010/article/details/83586762
————————————————


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM