Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


11.1.1 数値型の概要

数値データ型のサマリーについて説明します。数値型のプロパティーおよびストレージ要件の追加情報については、セクション11.2「数値型」およびセクション11.7「データ型のストレージ要件」を参照してください。

M は整数型の最大表示幅を示します。最大表示幅は 255 です。セクション11.2「数値型」で説明しているように、表示幅はその型に含めることができる値の範囲とは関係ありません。浮動小数点型と固定小数点型の場合、M は格納可能な桁数の合計です。

数値カラムに対して ZEROFILL を指定すると、MySQL は自動的にそのカラムに UNSIGNED 属性を追加します。

UNSIGNED 属性を許可している数値データ型は、SIGNED も許可します。ただし、このデータ型はデフォルトで符号付きになっているため、SIGNED 属性を指定しても効果はありません。

SERIALBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE のエイリアスです。

整数カラム定義の中の SERIAL DEFAULT VALUENOT NULL AUTO_INCREMENT UNIQUE のエイリアスです。

警告

一方が UNSIGNED 型のときに 2 つの整数値の間で減算を行うと、NO_UNSIGNED_SUBTRACTION SQL モードが有効でないかぎり、結果の値は符号なしになります。セクション12.10「キャスト関数と演算子」を参照してください。

  • BIT[(M)]

    ビットフィールド型。M は、値あたりのビット数 (1 から 64) を表します。M を省略した場合のデフォルトは 1 です。

  • TINYINT[(M)] [UNSIGNED] [ZEROFILL]

    非常に小さい整数。符号付きの範囲は -128 から 127 です。符号なしの範囲は 0 から 255 です。

  • BOOLBOOLEAN

    これらの型は TINYINT(1) のシノニムです。ゼロの値は false と見なされます。ゼロ以外の値は true と見なされます。

    mysql> SELECT IF(0, 'true', 'false');
    +------------------------+
    | IF(0, 'true', 'false') |
    +------------------------+
    | false                  |
    +------------------------+
    
    mysql> SELECT IF(1, 'true', 'false');
    +------------------------+
    | IF(1, 'true', 'false') |
    +------------------------+
    | true                   |
    +------------------------+
    
    mysql> SELECT IF(2, 'true', 'false');
    +------------------------+
    | IF(2, 'true', 'false') |
    +------------------------+
    | true                   |
    +------------------------+

    ただし、ここに示されているように、TRUE 値と FALSE 値はそれぞれ、10 の単なるエイリアスです。

    mysql> SELECT IF(0 = FALSE, 'true', 'false');
    +--------------------------------+
    | IF(0 = FALSE, 'true', 'false') |
    +--------------------------------+
    | true                           |
    +--------------------------------+
    
    mysql> SELECT IF(1 = TRUE, 'true', 'false');
    +-------------------------------+
    | IF(1 = TRUE, 'true', 'false') |
    +-------------------------------+
    | true                          |
    +-------------------------------+
    
    mysql> SELECT IF(2 = TRUE, 'true', 'false');
    +-------------------------------+
    | IF(2 = TRUE, 'true', 'false') |
    +-------------------------------+
    | false                         |
    +-------------------------------+
    
    mysql> SELECT IF(2 = FALSE, 'true', 'false');
    +--------------------------------+
    | IF(2 = FALSE, 'true', 'false') |
    +--------------------------------+
    | false                          |
    +--------------------------------+

    最後の 2 つのステートメントは、21 とも 0 とも等しくないために示される結果を表示します。

  • SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

    小さい整数。符号付きの範囲は -32768 から 32767 です。符号なしの範囲は 0 から 65535 です。

  • MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

    中間サイズの整数。符号付きの範囲は -8388608 から 8388607 です。符号なしの範囲は 0 から 16777215 です。

  • INT[(M)] [UNSIGNED] [ZEROFILL]

    普通サイズの整数。符号付きの範囲は -2147483648 から 2147483647 です。符号なしの範囲は 0 から 4294967295 です。

  • INTEGER[(M)] [UNSIGNED] [ZEROFILL]

    この型は INT のシノニムです。

  • BIGINT[(M)] [UNSIGNED] [ZEROFILL]

    大きい整数。符号付きの範囲は -9223372036854775808 から 9223372036854775807 です。符号なしの範囲は 0 から 18446744073709551615 です。

    SERIALBIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE のエイリアスです。

    BIGINT カラムについて注意の必要な点は、次のとおりです。

    • すべての演算は符号付きの BIGINT 値または DOUBLE 値を使用して行われるため、ビット関数を使用しないかぎり、9223372036854775807 (63 ビット) よりも大きい符号なしの整数を使用しないでください。そのようにした場合、BIGINT 値から DOUBLE 値への変換時に、丸め誤差のために結果の最後の数桁に誤差が生じる可能性があります。

      MySQL は、次の場合に、BIGINT を扱うことができます。

      • 符号なしの大きな値を BIGINT カラムに格納するために整数を使用するとき。

      • MIN(col_name) または MAX(col_name) 内。ここで col_nameBIGINT カラムを指します。

      • 演算子 (+-* など) を使用する場合。ここで両方のオペランドは整数です。

    • 文字列を使用して格納すると、いつでも正確な整数値を BIGINT カラムに格納できます。この場合、MySQL は、中間倍精度表現を含まない文字列から数値に変換します。

    • 両方のオペランドが整数値の場合、-+、および * の演算子は、BIGINT 演算を使用します。これは、2 つの大きい整数 (または整数を返す関数からの結果) を掛け合わした場合、その結果が 9223372036854775807 より大きいときには、予期しない結果になるということを意味します。

  • DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

    パックされた正確な固定小数点数。M は桁数の合計 (精度) で、D は小数点以下の桁数 (スケール) です。小数点と、負の数に対する-の記号は M にはカウントされません。D が 0 のときは、小数点や小数部はありません。DECIMAL の最大桁数 (M) は 65 です。サポートされる小数部の最大桁数 (D) は 30 です。D が省略された場合のデフォルトは 0 です。M が省略された場合のデフォルトは 10 です。

    UNSIGNED が指定されている場合、負の値は許可されません。

    DECIMAL カラムを使用したすべての基本的な計算 (+, -, *, /) は、65 桁の精度で行われます。

  • DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]

    これらの型は DECIMAL のシノニムです。FIXED シノニムは、ほかのデータベースシステムとの互換性のために使用できます。

  • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

    小さい (単精度) 浮動小数点数。許可される値は、-3.402823466E+38 から -1.175494351E-380、および 1.175494351E-38 から 3.402823466E+38 です。これらは、IEEE スタンダードに基づいた理論的な限度です。使用しているハードウェアまたはオペレーティングシステムによっては、実際の範囲は少し小さくなる場合があります。

    M は桁数の合計で、D は小数点以下の桁数です。MD を省略した場合、値はハードウェアで許可された限度まで格納されます。単精度小数点数はおおよそ小数第 7 位まで正確です。

    UNSIGNED が指定されている場合、負の値は許可されません。

    MySQL ではすべての計算が倍精度で行われているので、FLOAT を使用すると、予想外の問題が起きることがあります。セクションB.5.5.7「一致する行がない場合の問題の解決」を参照してください。

  • DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

    普通サイズ (倍精度) の浮動小数点数。許可されている値は、-1.7976931348623157E+308 から -2.2250738585072014E-3080、および 2.2250738585072014E-308 から 1.7976931348623157E+308 です。これらは、IEEE スタンダードに基づいた理論的な限度です。使用しているハードウェアまたはオペレーティングシステムによっては、実際の範囲は少し小さくなる場合があります。

    M は桁数の合計で、D は小数点以下の桁数です。MD を省略した場合、値はハードウェアで許可された限度まで格納されます。倍精度小数点数はおおよそ小数第 15 位まで正確です。

    UNSIGNED が指定されている場合、負の値は許可されません。

  • DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL], REAL[(M,D)] [UNSIGNED] [ZEROFILL]

    これらの型は DOUBLE のシノニムです。例外: REAL_AS_FLOAT SQL モードが有効な場合は、DOUBLE ではなく REALFLOAT のシノニムになります。

  • FLOAT(p) [UNSIGNED] [ZEROFILL]

    浮動小数点数です。p は精度をビットで表現しますが、MySQL は、結果として得られるデータ型に対して FLOAT または DOUBLE のどちらを使用するかを決めるためだけにこの値を使用します。p が 0 から 24 のとき、そのデータ型は M 値も D 値もない FLOAT になります。p が 25 から 53 のとき、そのデータ型は M 値も D 値もない DOUBLE になります。結果となるカラムの範囲は、このセクションで前述した単精度 FLOAT または倍精度 DOUBLE データ型の場合と同じです。

    FLOAT(p) 構文は ODBC との互換性を確保するために用意されています。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.