MySQL では、SQL-92
        のすべての数値データ型をサポートしています。これらのデータ型は、正確な数値データ型(NUMERIC、DECIMAL、INTEGER、SMALLINT)だけでなく、近似数値データ型(FLOAT、REAL、DOUBLE
        PRECISION)を含みます。キーワード
        INT は INTEGER
        のシノニムで、キーワード DEC は
        DECIMAL のシノニムです。
      
        MySQL では、NUMERIC 型と
        DECIMAL 型は、SQL-92
        標準で使用可能なデータ型と同じデータ型として実装されます。これらのデータ型は、金額データに関する値など、正確な精度で保存することが重要となる値に対して使用されます。これらのいずれかの型のカラムを宣言する際には、次のように、精度とスケールを指定することができます(通常、これらが指定されます)。
      
salary DECIMAL(5,2)
        この例で、5
        (precision)
        は、値に対して格納される 10
        進数の桁数を表わし、2
        (scale)
        は、小数点に続いて格納される桁数を表わします。したがって、この場合、salary
        カラムに格納できる値の範囲は、-99.99
        〜 99.99 になります(MySQL
        では、正数の符号を格納する必要がないため、このカラムには、実際には、999.99
        までの数値を格納することができます)。
      
        SQL-92 では、構文 DECIMAL(p) は
        DECIMAL(p,0)
        と同じです。同様に、構文 DECIMAL
        は DECIMAL(p,0)
        と同じです。この場合、p
        の値を決定する実装を行うことができます。MySQL
        では、現在のところ、DECIMAL
        および NUMERIC
        データ型のこれらの異型をサポートしていません。通常、これらの型の主な利点は精度とスケールを明示的に制御できることによるため、これはそれほど問題にはなりません。
      
        DECIMAL 値と NUMERIC
        値は、値の小数部の精度を維持するため、バイナリの浮動小数点数としてではなく、文字列として格納されます。値の各桁、小数点(scale
        > 0 の場合)、そして
        ‘-’
        符号(負数の場合)に対して、1
        文字が使用されます。scale が 0
        の場合、DECIMAL 値と
        NUMERIC
        値には小数点も小数部も含まれません。
      
        DECIMAL 値と NUMERIC
        値の最大範囲は DOUBLE
        値と同じですが、個々の DECIMAL
        または NUMERIC
        カラムの実際の範囲は、個々のカラムの
        precision または scale
        によって制限されます。指定されている
        scale
        で許容される桁数を超える桁数を小数部に持つ値がカラムに割り当てられた場合、値は指定されている
        scale
        に合わせて丸められます。指定されている(またはデフォルトの)precision
        と scale
        によって暗黙的に指定された範囲を超える大きさの値が
        DECIMAL または NUMERIC
        カラムに割り当てられた場合、その範囲の最大値が格納されます。
      
        SQL-92 標準の拡張として、MySQL
        では、前出の表に挙げているように、TINYINT、MEDIUMINT、および
        BIGINT
        型もサポートしています。もう 1
        つの拡張として、MySQL には、INT(4)
        のように、型の基本キーワードに続いて整数値の表示幅をかっこ内に指定できるオプションがあります。このオプションの表示幅の指定は、カラムに指定された幅より小さい幅を持つ値で表示の左側を埋める目的で使用されますが、そのカラムに格納できる値の範囲が制限されたり、そのカラムに指定された幅を超える幅を持つ値の桁数が制限されたりすることはありません。オプションの拡張属性
        ZEROFILL
        と組み合せて使用した場合、デフォルトのスペースに代わってゼロが埋め込まれます。
        たとえば、INT(5) ZEROFILL
        として宣言されたカラムの場合、値
        4 は 00004
        として取り出されます。注意:
        整数カラムの表示幅より大きい値を格納すると、MySQL
        で一部の複雑な結合のテンポラリテーブルを生成するときに問題が発生することがあります。この場合、データはあくまでも本来のカラム幅に合っているものとして扱われます。
      
        すべての整数型には、オプション(非標準)属性
        UNSIGNED
        を設定することができます。符号なしの値は、正数値だけを入力できるようにしたいカラムで、やや大きい数値範囲を必要とする場合に使用することができます。
      
        MySQL 4.0.2 以降では、浮動小数点型にも
        UNSIGNED
        を設定することができます。
        この属性が指定されていると、整数型の場合と同じように、カラムに負数の値を格納できなくなりますが、整数型とは異なり、カラム値の上の範囲は変わりません。
      
        FLOAT
        型は近似数値データ型を表現する目的で使用されます。
        SQL-92 標準では、キーワード FLOAT
        に続くかっこ内にオプションの精度をビットで指定することができます(指数の範囲は指定できません)。このオプションの精度指定は
        MySQL
        実装でもサポートしています。精度を指定しないでカラムに対して
        FLOAT
        キーワードを使用した場合、MySQL では 4
        バイトを使って値が格納されます。FLOAT
        キーワードに続けてかっこ内に 2
        つの数字を指定する可変の構文も使用できます。このオプションでは、最初の数字は値に必要なバイト単位の記憶容量を表わし、2
        番目の数字は格納および表示する小数部の桁数を表わします(DECIMAL
        および NUMERIC と同様)。MySQL
        では、カラムに対して指定されている小数部桁数を超える数の桁を格納しようとすると、格納時に値が丸められ、余分な桁が削除されます。
      
        REAL 型と DOUBLE
        PRECISION
        型では精度の指定は行えません。SQL-92
        標準の拡張として、MySQL
        では、DOUBLE 型は DOUBLE
        PRECISION
        型のシノニムとして認識されます。SQL-92
        標準では、REAL 型の精度は
        DOUBLE PRECISION
        型で使用されている精度より小さくなければならないのに対し、MySQL
        では、これらの両方が 8
        バイトの倍精度浮動小数点値として実装されます(非
        ``ANSI モード'' で実行した場合)。
        最大限の移植性を確保するためには、近似数値データ値の格納を必要とするコードでは、FLOAT
        または DOUBLE PRECISION
        の使用時に精度と小数部の桁数をいずれも指定しないようにします。
      
数値型のカラムに、そのカラム型で許容されている範囲を超える値を格納しようとすると、MySQL では、値は許容範囲の最大値または最低値に丸められて格納されます。
        たとえば、INT カラムの範囲は
        -2147483648 から
        2147483647
        です。この場合、INT カラムに
        -9999999999
        という値を挿入しようとすると、値は範囲の最低値に丸められ、-2147483648
        として格納されます。同様に、9999999999
        という値を挿入しようとすると、値は
        2147483647 として格納されます。
      
        INT カラムが UNSIGNED
        として設定されている場合、このカラムの範囲のサイズは変わりませんが、最小値と最大値はそれぞれ
        0 と 4294967295
        になります。
        したがって、-9999999999 および
        9999999999
        という値を格納しようとすると、このカラムにはそれぞれ
        0 および 4294967296
        という値が格納されます。
      
        ALTER TABLE、LOAD DATA
        INFILE、UPDATE、および複数行の
        INSERT
        ステートメントでは、切り落としによる値の変換は
        ``警告'' として報告されます。
      
| 型 | バイト | 最小値 | 最大値 | 
| TINYINT | 1 | -128 | 127 | 
| SMALLINT | 2 | -32768 | 32767 | 
| MEDIUMINT | 3 | -8388608 | 8388607 | 
| INT | 4 | -2147483648 | 2147483647 | 
| BIGINT | 8 | -9223372036854775808 | 9223372036854775807 | 
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

