MySQLのデータ型についてのまとめです。よく使うであろう型だけ簡易にピックアップしました。より詳細な情報についてはMySQLデータ型一覧 (詳細)を参照してください。
数値型
※1. DECIMALは誤差が発生しないため、事務処理に適しています。ただし容量を使います。FLOAT, DOUBLEはコンピュータの世界でよく利用される2進浮動小数点数です。使い方によって誤差が発生することがあります。非常に大きな値もしくは非常に小さい値を扱う科学演算などで使用します。科学演算をするわけではなく、またこの型の意味もよく分からずFLOATやDOUBLEを使うのは絶対にやめましょう。あとで苦労します。小数点数を扱いたい場合には、特別な理由が無い限りDECIMALを使うようにしましょう。
※2. MySQLにBOOL型は存在しません。BOOLで指定すると実際にはTINYINT(1)で定義されます。しかし利用者は意識しなくてもいいでしょう。
※3. 5.0.3~5.0.5は64。それ以前のバージョンではM:0 ~ 253 M ≧ D。
日時型
※ 5.6.4以降では、DATETIMEで最大6桁の「Fractional Seconds」つまり「秒の小数部」を付加できます。指定は「DATETIME(6)」などとします。「DATETIME」「DATETIME(0)」はどちらも「DATETIME」として定義されます。
文字列型
※2. バイナリ型にはBLOB以外にも、固定長バイナリ型としてBINARY、可変長バイナリ型としてVARBINARYがあります。バイナリ型を使うのはそのほとんどが画像や音声・動画やその他のファイルを保存するときでしょう。そのような情報を保存するために固定長を使用する意義が低いですし、上限値を定義することもほとんど意味が無いでしょう。そのため本ページではBINARYとVARBINARYを省略しています。
余談MySQLのデータ型に関しては、公式ドキュメントがあまりまとまっておらずかつ英語でした。検索すると個人作成のブログなどでデータ型一覧やその説明は一応あるものの、
など。例えばDECIMAL型の説明が一切ないとか、DECIMAL型を「アンパック浮動小数点数」としていたり(公式マニュアルでは明確に「Fixed-Point Types」としているので、固定小数点数と訳すべき)。…と、とにかく信頼できる情報が全くといっていいほど見つからなかったため、自分で作成することにしました。
2014/12/08
|
Knowledge >