MySQL中的tinyint


mysql數據庫中的類型是以 “ 數據類型(m) ” 來定義的 :其中 數字m在不同的數據類型中表示含義是不同的。 整型數系統已經限制了取值范圍,比如tinyint占一個字節(8bit)、int占4個字節。所以整型數后面的m不是表示的數據長度,而是表示數據在顯示時顯示的最小長度(長度為字符數)。

tinyint(1) 這里的1表示的是最小顯示寬度是1個字符。

tinyint(2) 這里的2表示的是最小顯示寬度是2字符,但這里光設置m是沒有意義的,你還需要指定當數據少於長度m時用什么來填充,比如zerofill(表示有0填充)。

設置tinyint(2) zerofill 你插入1時他會顯示01。

設置tinyint(4) zerofill 你插入1時他會顯示0001。

mysql中tinyint(1)與tinyint(2)的區別

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 04 004 0004

 

tinyint和enum的區別?

  TINYINT(1)或ENUM('真','假')?

  用ENUM枚舉當存儲只有2個值時只占用一個位的寬度,0或1,但會花更多的時間去尋找了枚舉查詢的開始。

  用TINYINT(1)默認就會占用4個位的寬度(0000)

  得出結論:

    比如要存儲一個介於0-9之間的值,為了查詢獲取這個值,建議用TINYINT(1)會更快,

      但如果你是為了大量記錄枚舉(“真”,“假”),那么用ENUM( 'true' , 'false') 搜索會更快。

    所以由這里可以看出,當你使用tinyint[1]來存儲超過0,1兩個值以外的值,比如存儲2,那這個2就是臟數據,tinyint[1]只適用於存儲0和1兩個值,也即真和假,true和false

  一般的,咱們如果存的是純數字的話,建議用tinyint,如果是字符串,且是固定長度的,建議用char,而enum的枚舉字段,使用的使用需要慎重考慮,避免帶來不必要的麻煩


免責聲明!

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



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