Mysql的int(1)和int(M)的區別

2021-09-29 21:15:22 字數 1210 閱讀 6335

mysql中我們建表的時候,型別可以用int(10), 這是什麼意思呢?

首先我們看 mysql的整型型別有這樣幾種:

型別占用位元組

tinyint

1smallint

2mediumint

3int

4bigint

8這是決定儲存需要占用多少位元組,那麼後邊的數字(m)代表什麼意思呢?

tinyint(m), m預設為4;

smallint(m), m預設為6;

mediumint(m), m預設為9;

int(m),m預設為11;

bigint(m),m預設為20.

m表示最大顯示寬度, 建表若設定了zerofill(0填充), 會在數字前面補充0.

總結:

1.規定型別之後,儲存是定長的,int(1)和int(4)從本身長度還是儲存方式上都是一樣的。mysql裡,int(1)和int(4)的區別就是顯示的長度,但是要設定乙個引數:如果列制定了zerofill 就會用0填充顯示,如2 int(3)指定後就會顯示為002

2.int 儲存佔4個位元組, tinyint 儲存佔1個位元組,儲存長度決定了他們表示的數字範圍不同。int表示的數字範圍是:從 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型資料(所有數字)。tinyint 表示的範圍是0-255之間的數字。

3.tinyint(1),和tinyint(3)沒什麼區別,存123都能存的下,而如果tinyint(3) zerofill 的話,插入值 12,會儲存012,zerofill自動左邊補零,這才是限制顯示長度。

4.數字型別後面括號中的數字,不表示長度,表示的是顯示寬度,這點與 varchar、char 後面的數字含義是不同的。

varchar(5) 這裡的5 限制的是儲存字元的個數,字元不分貴賤(不分 中文、英文、數字…)!!!

varchar(n), 這裡的n是指字元數,並不是位元組數.占用的位元組數與編碼有關

utf-8, 乙個漢字3位元組 英文本母1位元組

結論:mysql會忽略具體的儲存細節,但是當mysql把資料儲存到硬碟上的時候肯定是以(位元組)的方式去儲存,那麼占用的的空間肯定會根據不同的編碼格式 32✖️3 或 32✖️2這種去儲存。

參考文章:

mysql中int 1 與int 10 的區別

int m unsigned zerofill 普通大小的整數。帶符號的範圍是 2147483648到2147483647。無符號的範圍是0到4294967295。int 1 和 int 10 本身沒有區別,但是加上 m 值後,會有顯示寬度的設定。如 所示 mysql create table te...

Mysql中int 1 的誤解及相關介紹

在mysql中使用int相關的資料型別時,如果不太了解其儲存方式,會產生一些誤用的情況.如 只儲存0 9之間的數字,可能會直接用int 1 習慣性的以為int 1 就相當於varchar 1 一樣,其實不然.下面來說下int相關資料型別的一些簡單介紹 型別 位元組最小值 最大值tinyint 1 1...

INT0及INT1中斷計數

名稱 int0及int1中斷計數 說明 每次按下第1個計數鍵時,第1組計數值累加並顯示在右邊3只數碼管上,每次按下第2個計數鍵時,第2組計數值累加並顯示在左邊3只數碼管上,後兩個按鍵分別清零。include define uchar unsigned char define uint unsigne...