web-dev-qa-db-ja.com

MySQLデータ型INT(11)対UNSIGNED INT(10)?

mySQLでINTのフィールドdataTypeを作成し、長さ/値を指定しない場合、自動的にint(11)になり、属性を設定した場合[〜#〜] unsigned [〜#〜]またはNSIGNED ZEROFILLその後、int(10)になります

これはlength(1)はどこに行くのですか?

49
diEcho

int値は-2147483648になります。これらは11桁なので、デフォルトのdisplayサイズは11です

unsigned intは負の数を許可しないため、デフォルトではdisplayサイズ10のみが必要です

以下のドキュメントが示すように、SIGNED INTとUNSIGNED INTを格納するために必要なビット数は同じであり、保存可能な数の範囲は単にシフトされています。

符号なしタイプは、列で負でない数のみを許可するために、または列のより大きな数値範囲が必要な場合に使用できます。たとえば、INT列がUNSIGNEDの場合、列の範囲のサイズは同じですが、そのエンドポイントは-2147483648および2147483647から0および4294967295までシフトします。

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

68
Shakti Singh

ドキュメント によると、この数は単なる表示幅です。

たとえば、INT(4)は、表示幅が4桁のINTを指定します。

表示幅は、列に格納できる値の範囲を制限しません。また、列の表示幅よりも広い値が正しく表示されることも妨げません。たとえば、SMALLINT(3)として指定された列の通常のSMALLINTの範囲は-32768〜32767であり、3桁で許可されている範囲外の値は3桁を超えて完全に表示されます。

デフォルトUNSIGNEDINTの表示幅は、単にUNSIGNEDINTの表示幅よりも1つ少ない-文字。

表示幅は自由に指定できます。これは、単なるdefaultです。

ドキュメントで「数字」という用語を使用することは、ここでは少し誤解を招く可能性があります。

誰かがまったく理解していないことを念頭に置いてください Shaktiの答え (私は理解できませんでした)。理由の視覚的表現は次のとおりです。

 Signed minimum:
 - 2 1 4 7 4 8 3 6 4  8
 1 2 3 4 5 6 7 8 9 10 11

 Unsigned max (also the signed max):
 4 2 9 4 9 6 7 2 9 5
 1 2 3 4 5 6 7 8 9 10
8
Darryl Hein