Mysql中tinyint(1)和tinyint(4)的區別詳析
1. varchar(M)和數值類型tinyint(M) 的區別
字符串類型:varchar(M)而言,M是字段中可以存儲的最大字符串,也就是說字段長度。根據設置,當你插入的數值超過字段設置的長度時,很有可能會收到錯誤提示,如果沒有收到提示,插入的數據也有可能被自動的截斷以適應該字段的預定義長度。所有像varchar(5)表示其存儲的字符串長度不能超過5。
數值列類型:其長度修飾符表示最大寬度,與該字段物理存儲沒有任何關系,也就是說,tinyint(1)和tinyint(4)有符號的情況下存儲范圍都是-128到127(沒有符號就是0到255)。
註意:有符號默認范圍(-128~127),默認長度是4.
無符號默認范圍(0~255),默認長度是3.
如果使用瞭zerofill,當實際長度達不到指定的顯示長度時,就會用0在前面補齊。
在mysql的數據類型中,tinyin與其帶不帶符號有關系,帶符號取值范圍為-128~127.不帶符號為0~255。tinyint後面括號的數字,和存儲的值沒有任何關系,隻是在某些情況下和顯示的寬度有關系。
2 測試
當將字符串類型的name字段設置的長度超過5會怎樣?
當將tinyint類型的(有符號)age字段設置范圍不在(-128~127)會怎樣?
1 bytes = 8 bit ,一個字節最多可以代表的數據長度是2的8次方 11111111 在計算機中也就是
-128到127
1.BIT[M]
位字段類型,M表示每個值的位數,范圍從1到64,如果M被忽略,默認為1
2.TINYINT[(M)] [UNSIGNED] [ZEROFILL] M默認為4
很小的整數。帶符號的范圍是-128到127。無符號的范圍是0到255。
3. BOOL,BOOLEAN
是TINYINT(1)的同義詞。zero值被視為假。非zero值視為真。
4.SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默認為6
小的整數。帶符號的范圍是-32768到32767。無符號的范圍是0到65535。
5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認為9
中等大小的整數。帶符號的范圍是-8388608到8388607。無符號的范圍是0到16777215。
6. INT[(M)] [UNSIGNED] [ZEROFILL] M默認為11
普通大小的整數。帶符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295。
7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認為20
大整數。帶符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615。
註意:這裡的M代表的並不是存儲在數據庫中的具體的長度,以前總是會誤以為int(3)隻能存儲3個長度的數字,int(11)就會存儲11個長度的數字,這是大錯特錯的。
總結
到此這篇關於Mysql中tinyint(1)和tinyint(4)區別的文章就介紹到這瞭,更多相關Mysql tinyint(1)和tinyint(4)區別內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 一文介紹mysql中TINYINT取值范圍
- 淺談Mysql tinyint(1)與tinyint(4)的區別
- mysql中int(3)和int(10)的數值范圍是否相同
- Java面試題沖刺第十三天–數據庫(3)
- MySQL中int (10) 和 int (11) 的區別