天天看點

mysql中int、bigint、smallint 和 tinyint的差別及應用

  • bigint

帶符号的範圍是-9223372036854775808到9223372036854775807。

從 -2^63 (-9223372036854775808) 到 2^63-1.

無符号的範圍是0到18446744073709551615。

int 普通大小的整數。帶符号的範圍是-2147483648到2147483647。無符号的範圍是0到4294967295。

就是值的範圍的問題了,如果需要大于int的範圍,就用bigint.

比如對數字型字段的需求大約也就幾萬條吧。用int就夠了

bigint已經有長度了,在mysql建表中的length,隻是用于顯示的位數

  • int

從 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型資料(所有數字)。存儲大小為

4 個位元組。int 的 SQL-92 同義字為 integer。

  • smallint
從 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型資料。存儲大小為 2 個位元組。
  • tinyint
從 0 到 255 的整型資料。存儲大小為 1 位元組。

在支援整數值的地方支援 bigint 資料類型。但是,bigint 用于某些特殊的情況,當整數值超過 int

資料類型支援的範圍時,就可以采用 bigint。在 SQL Server 中,int 資料類型是主要的整數資料類型。

在資料類型優先次序表中,bigint 位于 smallmoney 和 int 之間。 隻有當參數表達式是 bigint

資料類型時,函數才傳回 bigint。SQL Server 不會自動将其它整數資料類型(tinyint、smallint 和 int)提升為

bigint。 int(M) 在 integer 資料類型中,M 表示最大顯示寬度。在 int(M) 中,M 的值跟 int(M)

所占多少存儲空間并無任何關系。和數字位數也無關系 int(3)、int(4)、int(8) 在磁盤上都是占用 4 btyes 的存儲空間。