MySQLで金額を保存するならDECIMAL型!FLOATを避けるべき理由と実装手順
MySQLで金額を保存するならDECIMAL型が最適
MySQLで金額(お金の値)を保存する場合、最適な選択はDECIMAL型またはNUMERIC型です。一方、FLOAT型は丸め誤差が発生する可能性があるため、金額の保存には適していません。金銭に関わるデータを扱う際は、FLOAT型の使用は避けましょう。
DECIMAL型でテーブルを作成する
まず、DECIMAL型のカラムを持つテーブルを作成します。以下がテーブル作成のクエリです。
mysql> create table MoneyStorageDemo
-> (
-> Amount DECIMAL(4,2)
-> );
Query OK, 0 rows affected (0.44 sec)
ここで指定している「DECIMAL(4,2)」は、全体で4桁、うち小数点以下が2桁であることを意味します。つまり、最大99.99までの金額を誤差なく正確に保存できます。実際のシステムでは、扱う金額の桁数に応じて「DECIMAL(10,2)」のように適切な精度を設定してください。
INSERTコマンドでデータを挿入する
次に、INSERTコマンドを使っていくつかの値をテーブルに挿入します。
mysql> insert into MoneyStorageDemo values(50.2);
Query OK, 1 row affected (0.10 sec)
mysql> insert into MoneyStorageDemo values(5.50);
Query OK, 1 row affected (0.32 sec)
mysql> insert into MoneyStorageDemo values(10.4);
Query OK, 1 row affected (0.26 sec)
SELECT文で保存された値を確認する
SELECT文を使えば、テーブル内のすべての値を表示できます。
mysql> select * from MoneyStorageDemo;
実行結果は以下の通りです。
+--------+
| Amount |
+--------+
| 50.20 |
| 5.50 |
| 10.40 |
+--------+
3 rows in set (0.00 sec)
ご覧のとおり、挿入時には「50.2」や「10.4」と入力しましたが、DECIMAL(4,2)の定義に従って「50.20」「10.40」と小数点以下2桁で正確に格納されています。このようにDECIMAL型を使用することで、金銭計算における浮動小数点の誤差を防ぎ、信頼性の高い金額管理を実現できます。請求処理や決済システムなど、正確さが求められる場面では必ずDECIMAL型(またはNUMERIC型)を選択しましょう。
-
MySQLで行を削除する方法|DELETE文の基本と実行例を解説
MySQLでテーブルから特定の行(レコード)を削除するには、DELETE文を使用します。この記事では、実際にサンプルテーブルを作成し、DELETE文を使って行を削除する手順を順番に解説します。1. サンプルテーブルの作成まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> CustomerName varchar(100), -> Cus
-
MySQLクエリの入力方法|基本ルールから複数行クエリまで解説
MySQLクエリの入力方法コンソールでクエリを入力する前に、まずサーバーに正しく接続できているかを確認することが重要です。以下のクエリを実行すると、使用中のサーバーのバージョン番号と現在の日付が表示されます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント:関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つまり、「version()」「Version()」「vERsion()」など、いずれも同じ意味として処理されます。「CURRENT_DATE」についても同様です。MySQLクエリ実行時の基本ルールSQLクエリの