MySQLにDECIMAL型(小数値)を挿入する方法を徹底解説
MySQLでDECIMAL型を使うには
MySQLデータベースに小数値を挿入する場合は、カラムのデータ型としてDECIMAL型を定義します。DECIMAL型は金額のように誤差が許されない数値を正確に格納したい場合に最適なデータ型です。
DECIMAL型の基本構文
テーブル作成時に、次の構文でDECIMAL型のカラムを定義できます。
yourColumnName DECIMAL(総桁数, 小数点以下の桁数);
第1引数は全体の有効桁数、第2引数はそのうち小数点以下に割り当てる桁数を表します。たとえば DECIMAL(4,2) なら「最大4桁・うち小数点以下2桁」、すなわち「-99.99 ~ 99.99」の範囲の値を格納できます。
サンプルテーブルの作成
動作を確認するために、以下のクエリでテーブルを作成してみましょう。
mysql> create table DecimalInsert
-> (
-> Id int,
-> Name varchar(100),
-> Amount DECIMAL(4,2)
-> );
Query OK, 0 rows affected (0.65 sec)
INSERT文で小数値を挿入する
続いて、INSERT文を使って小数値を挿入します。
mysql> insert into DecimalInsert values(1,'John',12.4); Query OK, 1 row affected (0.15 sec) mysql> insert into DecimalInsert values(2,'Carol',12.34); Query OK, 1 row affected (0.16 sec) mysql> insert into DecimalInsert values(3,'Mike',1.424); Query OK, 1 row affected, 1 warning (0.17 sec)
ここで注目すべき点は、DECIMAL(4,2) では小数点以下を2桁までしか保持できないことです。そのため、3件目の「1.424」のように小数点以下が3桁ある値を挿入すると、自動的に四捨五入されて警告(warning)が発生します。厳密なSQLモードが有効な環境では、代わりにエラーとなる場合もあります。
挿入結果の確認
SELECT文ですべてのレコードを表示して確認しましょう。
mysql> select *from DecimalInsert;
実行結果は以下の通りです。
+------+-------+--------+ | Id | Name | Amount | +------+-------+--------+ | 1 | John | 12.40 | | 2 | Carol | 12.34 | | 3 | Mike | 1.42 | +------+-------+--------+ 3 rows in set (0.00 sec)
「12.4」は「12.40」と表示され、小数点以下2桁が確保されていることが分かります。また「1.424」は四捨五入されて「1.42」と格納されています。
まとめ
- MySQLで小数値を正確に扱うには、カラムをDECIMAL型として定義する。
DECIMAL(M,D)の M は全体の有効桁数、D は小数点以下の桁数を指定する。- 指定桁数を超える値は自動的に四捨五入され、設定によっては警告やエラーが発生する。
- 金額計算など誤差が許されない処理では、FLOATやDOUBLEではなくDECIMAL型の使用を推奨する。
-
JDBCを使ってMySQLデータベースにファイルを保存・挿入する方法
一般的に、ファイルの内容はMySQLデータベースでは Clob 型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)のカラムに保存されます。 JDBCはClob型をサポートしており、これを利用することでファイルの内容をデータベースのテーブルに格納できます。 PreparedStatement インターフェースが提供する setCharacterStream() メソッドは、パラメータのインデックス(位置)を表す整数と、Readerオブジェクトを引数として受け取ります。 このメソッドを使うと、指定したインデックスのプレースホルダ(?)に対して、Readerオブジェクト(ファイ
-
JavaでMySQLデータベースにNULL値を挿入する方法
JavaからデータベースにNULL値を挿入したいケースはよくあります。その場合、PreparedStatementのsetNull()メソッドを使用します。基本的な構文は以下の通りです。ps.setNull(インデックス番号, Types.NULL);この記事では、実際にサンプルを通してNULL値の挿入手順を解説します。1. テーブルの作成まず、MySQLでテスト用のテーブルを作成します。mysql> create table DemoTable1893 ( FirstName varchar(20) ); Query OK, 0 rows affected (0