いまさら気づいたMySQLの数値の表示幅オプション

TINYINTに限らず数値形で、
TINYINT(1)
となると「()」に入るのは数値の桁だと思っていた。なのでYes/Noなどの値を1/0などで入れるために設定していた。

でもTINYINT(1)としているフィールドにも10とかが普通で入る。bug?と思ってMySQLのマニュアルを読んだら

SQL-92 標準の拡張として、MySQL では、前出の表に挙げているように、TINYINT、MEDIUMINT、および BIGINT 型もサポートしています。もう 1 つの拡張として、MySQL には、INT(4) のように、型の基本キーワードに続いて整数値の表示幅をかっこ内に指定できるオプションがあります。このオプションの表示幅の指定は、カラムに指定された幅より小さい幅を持つ値で表示の左側を埋める目的で使用されますが、そのカラムに格納できる値の範囲が制限されたり、そのカラムに指定された幅を超える幅を持つ値の桁数が制限されたりすることはありません

なるほど!宣言してはみたものの、効力はないのね。なるほど。

という事はTINYINT(1)としたものの、1バイトは-127~127なので、1桁以外で1バイト内の数値が来てもエラーにならない、という訳だね。