結論から言うと、

基本的に、DBの数値型で、桁数の最大値を指定する場合、

int(?) ではなく、桁数に合った型(tinyint、smallint等) を使いましょう。


まずは、基本。

Mysqlのint型の入力可能桁数表。


型       バイト  最小値             最大値
TINYINT      1   -128               127
SMALLINT    2   -32768             32767
MEDIUMINT  3   -8388608            8388607
INT         4   -2147483648         2147483647
BIGINT      8   -9223372036854775808  9223372036854775807


Mysqlでは、int(1)のように、型指定の後に、整数値の表示幅をカッコ内で指定できます。

そこで、改めて表を見ると、int(1)とtinyintは一見同じ意味のように思えますが・・・

実は違いがあります。


int(?)とか、?に数字を入れられますが、この指定をしたからと言って、

カラムに格納できる値の範囲が制限されたりすることはありません。


つまり、int(1)と指定しても、実際には11桁(int型の最大値)までDB上に登録できてしまいます。


この(?)の数字は、オプション属性の ZEROFILL を使用した際に、

スペースに代わってゼロが埋め込まれる際の幅です。


※ZEROFILL

→オプションの拡張属性 ZEROFILL を使用した場合、デフォルトのスペースに代わってゼロが埋め込まれます。


※参考

http://blog.clouder.jp/archives/000228.html



・・・int(?)で指定しても、DBを参照するアプリからの影響はほぼないのかもしれませんが、

無駄な領域を確保することになってしまうので、注意しましょう。