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...