web-dev-qa-db-ja.com

INT(5)とSMALLINT(5):数値タイプの後の括弧内の数値

MySQLテーブルの定義では、INT(5)SMALLINT(5)の違いはありますか?または、両方とも同じサイズを表しますか?

30
BenV

intsmallintはサイズが異なるため、範囲が異なります。 _(5)_はsmallint(5)またはint(5)"Numeric Type Attribute" と呼ばれ、フィールドの「表示幅」を表します。

MySQLは、オプションで整数データ型の表示幅を括弧で囲んで型のベースキーワードの後に​​指定するための拡張をサポートしています。たとえば、INT(4)は、表示幅が4桁のINTを指定します。このオプションの表示幅をアプリケーションで使用すると、列に指定された幅よりも狭い幅の整数値を、スペースでそれらを左に埋め込むことによって表示できます。 (つまり、この幅は結果セットとともに返されるメタデータに存在します。それが使用されるかどうかはアプリケーション次第です。)

オプションの(非標準の)属性ZEROFILLと組み合わせて使用​​すると、デフォルトのスペースのパディングはゼロに置き換えられます。たとえば、INT(4) ZEROFILLとして宣言された列の場合、_5_の値は_0005_として取得されます。

これはMySQLの「拡張」であり、zerofillは拡張の「拡張」です。

数値型の表示を制御する正気な方法では、数値型の属性を使用せず、代わりに

42
Derek Downey