55

MySQL では、フィールド dataType を作成し、INT長さ/値を指定しない場合、自動的にになりint(11)、属性UNSIGNEDまたはUNSIGNED ZEROFILLを設定すると、次のようになります。int(10)

この length(1)はどこに行くのでしょうか?

4

3 に答える 3

75

int 値は -2147483648 にすることができます。これらは 11 桁なので、デフォルトの表示サイズは 11です。

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

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

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

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

于 2011-03-10T07:18:38.537 に答える
24

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

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

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

デフォルトの表示幅は、文字を表示しないという理由だけUNSIGNED INTで、非の場合よりも1つ小さくなります。UNSIGNED INT-

表示幅は自由に指定できることに注意してください。これは単なるデフォルトです

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

于 2011-07-25T01:38:38.597 に答える
10

誰かがシャクティの答えを完全に理解していない場合に備えて(私は理解していませんでした)。理由は次のとおりです。

 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
于 2011-07-25T01:31:07.053 に答える