2012-02-07 51 views
3

我剛剛創建了一個角色表,並且我定義了role_id tinyint(1),儘管我能夠存儲99,200最大爲255作爲unsigned的tinyint限制。那麼在數據類型中傳遞這個大小的含義是什麼?關於mysql表字段的大小

當閱讀的很少,它是關於顯示寬度,但是當我在我的PHP頁面上獲取結果時,它顯示爲它們存儲在表中。

任何導師,你能指導我清除它嗎?

回答

2

10.1.1. Numeric Type Overview

M indicates the maximum display width for integer types. The maximum legal 
display width is 255. Display width is unrelated to the range of values a type 
can contain [...]. 

所以tinyint(M),或者你的情況tinyint(1),意味着當由MySQL正在顯示存儲在role_id任何值將被切碎爲一個字節的長度。類似地,tinyint(3)將會用一個數字整數來填充兩個空格。您也可以使用tinyint(3) zerofill來代替0,但它的副作用是使您的tinyint無符號。

但是,無論你如何指定tinyint就是他們將在內部存儲爲範圍[-128,127]一個整數(簽字)或[0,255](無符號),所以這是查詢數據庫時,PHP將收到價值。

您可以使用mysql_field_lensubstr來限制顯示寬度,類似於PHP。

+0

向您的答案致敬。從頭到腳,完全消化。非常感謝。 – 2012-02-07 11:03:55