MySQLデータベースのデータ型「decimal」に関する詳細解説
MySQLでは、小数値を正確に格納するために、decimal型データ型を使用します。floatやdoubleといった他の浮動小数点型よりも、通貨金額や利率などの正確な計算が求められるデータを格納するのに適しています。
decimal型データ型の構文は次のようになります:
10進数(M, D)
Mは総桁数、Dは小数桁数を示します。MとDの範囲はそれぞれ0~65です。
一般的な10進数データ型の例とその説明を以下に示します。
- デシマル(5, 2)
5桁までの数値が格納でき、小数値は2桁までです。たとえば123.45や12.34などの数値はこのデータ型に格納できますが、1234.56789などは合計桁数が5桁を超えているため格納できません。
- 10, 0の10進数
最大10桁まで格納できますが、小数点はありません。たとえば、1234567890は格納できますが、12.34は無効です。
- 数値(7, 3)
最大7桁、小数点が3桁まで格納できるということです。例えば1234.567、12.345などの数値はデータ型で格納できますが、123456.789は総桁数が7を超えるため無効です。
数値型の decimal で注意すべき点
- decimal型フィールドを定義する際は、実際の用途に応じて適切なMとD値を選択する必要があります。必要な精度が不確かな場合は、データを切断したり精度を失ったりしないように、比較的高めの値を選択することをお勧めします。
- 小数型のストレージサイズは値の大きさに関係なく固定されています。つまり、値が整数のもの、小数部の付いたものであっても、同じストレージサイズを必要とします。
- 小数型の計算効率は比較的低く、他の浮動小数点型に比べて演算速度が遅いため、データ量が多い場合、他のデータ型の使用を検討する必要がある。
- 浮動小数点演算は精度低下の原因になるので、decimal 型データを検索・計算するときはなるべく避けましょう。
要するに、MySQLデータベースではdecimal型を使用して精度の高い小数値を格納しますが、MとDの値は必要に応じて適切に選択でき、計算効率と精度の低下に注意してください。