如圖:
mysql 中的這個長度設置,即 int(n) 是什么意思,以及“無符號”和“填充零”又代表什么意思?
無符號:
首先int(n),Integer(n) 長度為32位二進制整數(4字節),勾選上“無符號”時表示禁止負數,取值從0開始。此時可以表示的范圍是 0 ---- 2e(32)-1 ,你可以存儲任何在這個范圍內的數字。(即符號位也用於具體數字的存儲)
填充零:
勾選上“零填充”之后就會有很大的不同,若選擇 int(4),存儲 18 (十進制),則數據庫中顯示的是 0018(十進制),如果填寫 12345(十進制),此時超過了選擇的指定寬度 4,但未超過 int 可存儲范圍(無符號時:0 ---- 2e(32)-1),會按原樣存儲。
int(n):
n 的定義與存儲空間沒有任何關系,底層存儲還是4個字節。
此處的 int(n) 中的 n 僅僅指的是顯示寬度,顯示寬度只用於顯示,並不能限制取值范圍和占用空間,如:int(3) 會占用 4 個字節的存儲空間,並且允許的最大值也不會是 999,而是 int 整型所允許的最大值(無符號時:2e(32)-1)。
該可選顯示寬度規定用於顯示寬度小於指定的列寬度的值時從左側填滿寬度。顯示寬度並不限制可以在列內保存的值的范圍,也不限制超過列的指定寬度的值的顯示。
即 mysql 需要用多少個十進制位來顯示該列數值。int 的最大有效顯示寬度為11(勾選“無符號”時32位二進制最大可轉化的十進制位數)。此時如果勾選過“零填充”,數字顯示會自動填充零。
聲明整型數據列時,我們可以為它指定個顯示寬度,如 int(5),指定顯示寬度為5個十進制位,如果沒有給它指定顯示寬度,MySQL會為它指定一個默認值:11,即 int 的最大十進制長度。
————————————————
版權聲明:本文為CSDN博主「頭禿人強」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_37834488/article/details/89891209