MySQL の整数型の括弧

エンジニアになりたての頃に、同僚がMySQL のテーブルのカラムの型を TINYINT(1) にしていたところ、(1) は意味ないからヤメロとレビューを受けていた。その時に理由を調査したのか、そういうものなんだなとスルーしたのかどうかは定かではないが、記憶に定着していなかったことは確かだったので調べた。

MySQL 8.0 のドキュメントを一次情報とする。 https://dev.mysql.com/doc/refman/8.0/ja/numeric-type-syntax.html

整数データ型の場合、M は最大表示幅を示します。 最大表示幅は 255 です。 表示幅は、セクション11.1.6「数値型の属性」 で説明されているように、型が格納できる値の範囲とは無関係です。

括弧内の値は最大表示幅を示し、格納される値の範囲とは無関係である。

浮動小数点データ型および固定小数点データ型の場合、M は格納できる合計桁数です。

浮動小数点、固定小数点の場合は、格納できる桁数を示す。

MySQL 8.0.17 では、整数データ型の表示幅属性は非推奨になりました。将来のバージョンの MySQL ではサポートされなくなる予定です。

将来的にサポートされなくなる予定なので、これから新たにカラム定義する場合には避けるほうが良い。