mysql數據類型——整型INT(m)


1.整形分為四種 tinyint smallint mediumint int bigint

 

注意:

  右側的取值范圍是在未加unsigned關鍵字的情況下,如果加了unsigned,則最大值翻倍,如tinyint unsigned的取值范圍為(0~256)。

項目出錯案例:

  在做根據身份獲取城市的時候

  發現大於127的region_id 就都取127得127( 東方市),一直找不到原因,原來是插入region_id的字段類型定義問題

定義為: tinyint(4) 最大127 若加上unsigned 則可增加到256     直接更改為 smallint(5) 最大值到32767 顯示成功!

表格一共有四列:

  字段類型, 占用字節數, 允許存儲的最小值, 允許存儲的最大值

拿int類型為例,
   占用字節數為4byte,
   字節(byte)並非是計算機存儲的最小單位, 還有比字節(byte)更小的單位, 也就是位(bit),一個位就代表一個0或1;
   8個位組成一個字節;
   一般字節用大寫B來表示byte, 位用小寫b來表示bit.
計算機存儲單位的換算:
1B=8b
1KB=1024B
1MB=1024KB 
根據int類型允許存儲的字節數是4個字節, 我們就能換算出int UNSIGNED(無符號)類型的能存儲的最小值為0, 最大值為4294967295(即4B=32b, 最大值即為32個1組成);
 
2.INT(m)里的m表示什么意思?
  M 表示最大顯示寬度。 在 int(M) 中,M 的值跟 int(M) 所占多少存儲空間無任何關系
  int(3)、int(4)、int(8) 在磁盤上都是占用 4 btyes 的存儲空間。說白了,除了顯示給用戶的方式有點不同外,int(M) 跟 int 數據類型是相同的。
int(M) 只有跟 zerofill 結合起來,才能使我們清楚的看到不同之處

@1.創建表t

mysql> drop table if exists t; mysql> create table t(id int zerofill);

@2.插入數據

  mysql> insert into t(id) values(10);

@3.顯示select * from t

@4.更改字段為int(3)

mysql>ALTER TABLE t CHANGE COLUMN id id INT(3) ZEROFILL;

顯示為:

@5.插入超過限定長度的值

mysql> mysql> insert into t(id) values(1000000);

從上面的測試可以看出:

  (M)  指定了 int 型數值顯示的寬度,如果字段數據類型是 int(4),則:當顯示數值 10 時,在左邊要補上 “00”;

  當顯示數值 100 是,在左邊要補上“0”;

  當顯示數值 1000000 時,已經超過了指定寬度“(4)”,因此按原樣輸出。 

  這個M=4我們可以簡單的理解成為, 我們建立這個長度是為了告訴MYSQL數據庫我們這個字段的存儲的數據的寬度為4位數,  當然如果你不是5位數(只要在該類型的存儲范圍之內)MYSQL也能正常存儲.

 

定義時需要注意是否使用 unsigned 符號類型,再就是顯示補齊寬度值


免責聲明!

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



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