MySQL では、整数データ型の基本キーワードに続く括弧内で、その型の表示幅をオプションで指定する拡張をサポートしています。たとえば、INT(4)
は、4 桁の表示幅の INT
を指定しています。このオプションの表示幅は、左側をスペースでパディングすることによって、カラムに対して指定された幅よりも狭く整数値を表示するために、アプリケーションで使用される場合があります。(つまり、この幅は結果セットで返されるメタデータの中にあります。これを使用するかどうかは、アプリケーションしだいです。)
表示幅は、カラムに格納できない値の範囲を制約しません。カラムの表示幅より広い値が正しく表示されなくなることもありません。たとえば、SMALLINT(3)
として指定されたカラムには、-32768
から 32767
の通常の SMALLINT
範囲があり、3 桁が許可されたこの範囲外の値は、4 桁以上を使用してすべて表示されます。
オプション (非標準) の属性 ZEROFILL
と一緒に使用すると、デフォルトのスペースのパディングはゼロに置き換えられます。たとえば、INT(4) ZEROFILL
として宣言されたカラムの場合、5
の値は 0005
として取得されます。
ZEROFILL
属性は、カラムが式や UNION
クエリーに含まれているときは無視されます。
ZEROFILL
属性を持つ整数カラムに表示幅より大きな値を格納した場合、MySQL が一部の複雑な結合に対して一時テーブルを生成するときに問題が発生することがあります。これらの場合、MySQL は、カラムの表示幅内でデータ値が適合すると想定します。
すべての整数型には、オプション (非標準) 属性 UNSIGNED
を指定できます。符号なしの型は、カラムで負ではない数値しか許可しないとき、またはカラムの上限の数値範囲を大きくする必要があるときに使用できます。たとえば、INT
カラムが UNSIGNED
である場合、カラム範囲のサイズは同じですが、その終点は -2147483648
と 2147483647
から、0
と 4294967295
に変化します。
浮動小数点と固定小数点も UNSIGNED
になり得ます。整数型と同じように、この属性は負の値がカラムに格納されるのを防ぎます。整数型とは異なり、カラム値の上限範囲は変わりません。
数値カラムに対して ZEROFILL
を指定すると、MySQL は自動的にそのカラムに UNSIGNED
属性を追加します。
整数または浮動小数点のデータ型には、追加の属性 AUTO_INCREMENT
を指定できます。インデックスが設定された AUTO_INCREMENT
カラムに NULL
(推奨) または 0
の値を挿入すると、カラムは次のシーケンス値に設定されます。通常、これは
です。ここで value
+1value
は現在テーブルにあるカラムの最大値です。AUTO_INCREMENT
シーケンスは 1
で始まります。(AUTO_INCREMENT
値を生成するために NULL
を挿入する場合、カラムを NOT NULL
と宣言する必要があります。カラムを NULL
と宣言した場合、NULL
を挿入すると NULL
が格納されます。)
MySQL 5.6.9 以降では、AUTO_INCREMENT
カラムの負の値はサポートされません。