熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

mysql int類型的長度值

2013-11-23 20:59:48  來源: MySQL 

  mysql在建表的時候int類型後的長度代表什麼? 是該列允許存儲值的最大寬度嗎? 為什麼我設置成int() 也一樣能存

  當時我雖然知道int()這個長度並不代表允許存儲的寬度但卻沒有一個合理的解釋 或者說對這個長度也沒有真正的研究過到底代表什麼 平時都用int() 也不知道為什麼要 所以我在網上查閱了一些資料 也仔細的看了mysql手冊關於int data type的說法

  以下是每個整數類型的存儲和范圍(來自mysql手冊)

  類型

  字節

  最小值

  最大值

  (帶符號的/無符號的)

  (帶符號的/無符號的)

  TINYINT

  

  

  

  

  

  SMALLINT

  

  

  

  

  

  MEDIUMINT

  

  

  

  

  

  INT

  

  

  

  

  

  BIGINT

  

  

  

  

  

  表格一共有四列分別表式:字段類型 占用字節數 允許存儲的最小值 允許存儲的最大值

  我們拿int類型為例:

  int類型 占用字節數為byte 學過計算機原理的同學應該知道 字節(byte)並非是計算機存儲的最小單位 還有比字節(byte)更小的單位 也就是位(bit)一個位就代表一個; 個位組成一個字節; 一般字節用大寫B來表示byte 位用小寫b來表示bit

  計算機存儲單位的換算:

  B=b

  KB=B

  MB=KB

  那麼根據int類型允許存儲的字節數是個字節 我們就能換算出int UNSIGNED(無符號)類型的能存儲的最小值為 最大值為(即B=b 最大值即為組成);

  接下來我們再說說我們建表時的字段長度到底是怎麼一回事

  CREATE TABLE `test` (

  `id` INT( ) NOT NULL AUTO_INCREMENT PRIMARY KEY

  `number` INT( ) NOT NULL

  ) ENGINE = MYISAM ;

  以test表的number字段為例 大家看到我建的是int()

  mysql手冊中這個長度/值用M來表示的 細心的朋友應該有注意到過mysql手冊上有這麼一句話: M指示最大顯示寬度最大有效顯示寬度是顯示寬度與存儲大小或類型包含的值的范圍無關;

  這句話看上去不太容易理解 因為這裡有個關鍵詞容易讓我們混淆 最大顯示寬度我們第一反應是該字段的值最大能允許存放的值的寬度 以為我們建了int()就不能存放數據 其實不是這個意思

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

  我們把這個字段的屬性修改為UNSIGNED ZEROFILL看一下效果

  我們看到現在我的number字段 長度(M)= 屬性=UNSIGNED ZEROFILL(無符號來填充位數) 設置這個屬性後我往表時插入數據系統會自動把number字段M不夠位的在左側用來填充; 效果如下


From:http://tw.wingwit.com/Article/program/MySQL/201311/29417.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.