無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 10 データタイプ :: 10.1 データタイプ概要 :: 10.1.1 数値タイプの概要
« 10.1 データタイプ概要

10.1.2 データと時刻タイプの概要 »
Section Navigation      [Toggle]
  • 10.1 データタイプ概要
  • 10.1.1 数値タイプの概要
  • 10.1.2 データと時刻タイプの概要
  • 10.1.3 文字列タイプの概要
  • 10.1.4 データタイプデフォルト値

10.1.1. 数値タイプの概要

数値データタイプの要約が次に紹介されます。追加情報については 項10.2. 「数値タイプ」 を参照してください。必要とする記憶容量は 項10.5. 「データタイプが必要とする記憶容量」 に紹介されています。

M は整数タイプの最大ディスプレイ幅を示しています。最大法定ディスプレイ幅は255です。項10.2. 「数値タイプ」で説明されているように、ディスプレイ幅はそのタイプの許容値幅とは関係ありません。浮動小数点と固定小数点タイプに関しては、M が格納可能な桁数の合計です。

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

SERIAL は BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE の別名です。

整数カラム定義の中の SERIAL DEFAULT VALUE は NOT NULL AUTO_INCREMENT UNIQUE の別名です。

警告:1つが UNSIGNED タイプの時に整数値間で減算を行うと、NO_UNSIGNED_SUBTRACTION SQLモードが有効でない限り、その結果から符号がなくなります。項11.8. 「キャスト関数と演算子」を参照してください。

  • BIT[(M)]

    ビットフィールドタイプM は1から64の、各値のビット数を表しています。M が削除された場合、デフォルトは1です。

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

    大変小さい整数符号が付く範囲は -128 から 127 です。符号が付かない範囲は 0 から 255 です。

  • BOOL、BOOLEAN

    これらのタイプは TINYINT(1) の同義語です。ゼロの値は誤りであるとみなされます。ゼロ以外の値は正確だとみなされます。

    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 はそれぞれが 1 と 0 の単なる別名です。

    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 は、1 とも 0 とも等しくないので、表示される結果を表しています。

    今後リリースされるMySQLの中で、標準SQLに基づき、ブーリアンタイプの扱いについて完全にカバーしていく予定です。

  • 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 です。

    BIGINT カラムに関して注意するべき事

    • 全ての演算は符号付の BIGINT か DOUBLE 値を利用しているので、ビット関数を使わない限り 9223372036854775807 (63ビット) 以上の大きい符号無し整数は利用してはいけません!もしそれをしてしまうと、 BIGINT 値から DOUBLE に変換する時、丸め誤差の為に、結果の最後のいくつかの桁に誤差が出るかもしれません。

      MySQLは、次のような時に BIGINT を扱う事ができます。

      • BIGINT カラムに符号無しの大きい値を格納するのに整数を使用する時

      • col_name が BIGINT カラムを参照する、MIN(col_name) や MAX(col_name) の中

      • 両方の演算数が整数の場合に、(+、 -、*、等の) 演算子を利用する時

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

    • 両方の演算数が整数の場合、-、 +、そして * 演算子は、 BIGINT 演算を利用します。これは、もし二つの大きい整数を掛け合わした場合、(または整数を戻す関数からの結果)、その結果が 9223372036854775807 以上の時には、予期しない結果になるという事を意味します。

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

    小さい(単精度) 浮動小数点数許容値は -3.402823466E+38 から -1.175494351E-38、 0、そして 1.175494351E-38 から 3.402823466E+38 です。これらは、IEEEスタンダードに基づいた理論的な限界です。利用するハードウェアやOSによっては、実際の範囲は少し小さくなるかも知れません。

    M は桁数の合計で、D は小数点以下の桁数の合計です。もし M と D が削除された場合、値はハードウェアに許容された限界まで格納されます。単精度小数点数は大体小数第7位まで正確です。

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

    MySQLでは全ての計算が倍精度で行われているので、FLOAT を利用すると、予想外の問題が起きます。項B.1.5.7. 「Solving Problems with No Matching Rows」を参照してください。

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

    普通サイズ(倍精度)浮動小数点数許容値は -1.7976931348623157E+308 から -2.2250738585072014E-308、 0、そして 2.2250738585072014E-308 から 1.7976931348623157E+308です。これらは、IEEEスタンダードに基づいた理論的な限界です。利用するハードウェアやOSによっては、実際の範囲は少し小さくなるかも知れません。

    M は桁数の合計で、D は小数点以下の桁数の合計です。もし M と D が削除された場合、値はハードウェアに許容された限界まで格納されます。倍精度小数点数は大体小数第15位まで正確です。

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

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

    これらのタイプは DOUBLE の同義語です。例外 :REAL_AS_FLOAT SQLモードが無効の時は、DOUBLE ではなく REAL が FLOAT の同義語になります。

  • 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互換性に添付されている。

  • 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 同義語は他のデータベースと互換性があります。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.