数値データタイプの要約が次に紹介されます。追加情報については 項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. 「キャスト関数と演算子」を参照してください。
ビットフィールドタイプM
は1から64の、各値のビット数を表しています。M
が削除された場合、デフォルトは1です。
TINYINT[(
M
)] [UNSIGNED]
[ZEROFILL]
大変小さい整数符号が付く範囲は
-128
から 127
です。符号が付かない範囲は 0
から 255
です。
これらのタイプは 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
データタイプの物と同じです。
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
同義語は他のデータベースと互換性があります。