MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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型)を選択しましょう。

  1. MySQLで行を削除する方法|DELETE文の基本と実行例を解説

    MySQLでテーブルから特定の行(レコード)を削除するには、DELETE文を使用します。この記事では、実際にサンプルテーブルを作成し、DELETE文を使って行を削除する手順を順番に解説します。1. サンプルテーブルの作成まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> CustomerName varchar(100), -> Cus

  2. MySQLクエリの入力方法|基本ルールから複数行クエリまで解説

    MySQLクエリの入力方法コンソールでクエリを入力する前に、まずサーバーに正しく接続できているかを確認することが重要です。以下のクエリを実行すると、使用中のサーバーのバージョン番号と現在の日付が表示されます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント:関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つまり、「version()」「Version()」「vERsion()」など、いずれも同じ意味として処理されます。「CURRENT_DATE」についても同様です。MySQLクエリ実行時の基本ルールSQLクエリの