1. 程式人生 > >navicat設定MySQL欄位int型別的長度INT(M)

navicat設定MySQL欄位int型別的長度INT(M)

1.varchar型別的長度是指這個欄位的字元(字母或漢字)個數。

2.數字型別的長度就不是這個意思,更為複雜。

int型別:長度的設定值範圍1~255(設定0時自動轉為11,不設定時自動轉為預設的11)(顯示寬度),在此範圍內任意長度值的欄位值範圍都是-2147483648~2147483647(即-2³¹-1~2³¹-1)

tinyint型別:長度設定值範圍1~255(設定0時自動轉為4,不設定時自動轉為預設的4)(顯示寬度),在此範圍內任意長度值的欄位值範圍都是-128~127(-2⁷-1~2⁷-1)

如:

指定一個欄位的型別為 INT(6),就可以保證所包含數字少於 6 個的值從資料庫中檢索出來時能夠自動地用空格填充。需要注意的是,使用一個寬度指示器不會影響欄位的大小和它可以儲存的值的範圍。 

總結:顯示寬度與儲存大小或型別包含的值的範圍無關。可選顯示寬度規定用於顯示寬度小於指定的列寬度的值時從左側填滿寬度。顯示寬度並不限制可以在列內儲存的值的範圍,也不限制超過列的指定寬度的值的顯示。當 mysql 為某些複雜的聯結(join)生成臨時表時,你可能會遇到問題,因為在這種情況下,mysql 信任地認為所有的值均適合原始的列寬度

這個可選的寬度規格說明是用於在數值顯示時,對某些值的寬度短於該列寬度的值進行左填補顯示的,而不是為了限制在該列中儲存值的寬度,也 不是為了限制那些超過該列指定寬度的值的可被顯示的數字位 數。

要查看出不同效果記得在建立型別的時候加 zerofill這個值,表示用0填充,否則看不出效果的。

我們通常在建立資料庫的時候都不會加入這個選項,所以可以說他們之間是沒有區別的。

例項:

1.varchar

varchar(5):欄位只允許最多5個字元或者5個漢字

2.int

INT(1):欄位值範圍在-2147483648~2147483647(即-2³¹-1~2³¹-1)內的數值都可以insert、select、update,此處寬度指示器的數值1不起作用。手動在navicat中改此欄位的值,也可通過sql修改。

int(1)、int(4)、int(11)和int(110)表示意思是一樣的。

INT(M) ZEROFILL,加上ZEROFILL後M才表現出不同,比如 INT(3) ZEROFILL,你插入到資料庫裡的是10,則實際插入為010,也就是在前面補充加了一個0.如果INT(3)和INT(10)不加ZEROFILL,則它們沒有什麼區別.M不是用來限制INT列內儲存值的範圍的.int(M)的最大值和最小值與UNSIGNED有關。

MySQL型別關鍵字後面的括號內指定整數值的顯示寬度(例如,INT(11))。該可選顯示寬度規定用於顯示寬度小於指定的列寬度的值時從左側填滿寬度。顯示寬度並不限制可以在列內儲存的值的範圍,也不限制超過列的指定寬度的值的顯示。

所以INT(1)和INT(11)預設是沒有任何區別的!!!

3.float

float(7,3):欄位總允許寬度為7,其中整數部分為4位(數值範圍可在0-9999),小數部分為3位(數值範圍可在0-999)

第一次設定此欄位成功後,不可再次手動在navicat中此欄位所在資料行的所有欄位值也不可手動刪除這條記錄,但可通過sql修改。

4.tinyint

tinyint(1):(類似int)欄位值範圍在-128~127(-2⁷-1~2⁷-1)內的數值都可以insert、select、update,此處寬度指示器的數值1不起作用。手動在navicat中改此欄位的值,也可通過sql修改。

5.double

double(7,3):欄位總允許寬度為7,其中整數部分為4位(數值範圍可在0-9999),小數部分為3位(數值範圍可在0-999)

手動在navicat中改此欄位及同資料行其他欄位的值,也可通過sql修改。

參考: