- Home ›
- MySQLの使い方 ›
- MySQLのデータ型
固定小数点数型(DECIMAL, NUMERIC)
MySQL で利用可能なデータ型の中で固定小数点数型(DECIMAL, NUMERIC)の使い方について解説します。
(Last modified: )
固定小数点数型のデータ型一覧
固定小数点数型は次の1つの種類が用意されています。
DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL] M は桁数の合計 (精度) で、D は小数点以下の桁数 (スケール) です。 最大桁数 (M) は 65 。デフォルトは 10。 小数部の最大桁数 (D) は 30 。デフォルトは 0。 別名:NUMERIC
DECIMAL 型は正確なデータを格納するので、金銭データなど正確な精度を保持することが重要な場合に適しています。
例えば DECIMAL(5, 2) とした場合、小数点以下が2桁、全体で5桁の数値を格納することができるので、格納できる値は、-999.99 から 999.99 の範囲になります。
例えば DECIMAL 型のカラムを持つテーブルを作成してみます。
create table numtest(num1 decimal(5, 2));
範囲内の値であれば正常に格納することができます。
insert into numtest values(37.25);
範囲を超える値を格納しようとするとエラーとなります。例えば DECIMAL(5, 2) 型のカラムに 24128.4 のような範囲外の値を格納しようとすると Out of range value for column 'カラム名' というエラーになります。
insert into numtest values(24128.4);
符号なし(UNSIGNED)
DECIMAL 型は正の数と負の数を扱うことができますが、データ型の後に UNSIGNED を付けると 0 と正の数しか格納できなくなります。
DECIMAL UNSIGNED
例として DECIMAL UNSIGNED 型のカラムを持つテーブルを作成してみます。
create table numtest(num1 decimal(5, 2) unsigned);
0 または 正の値の格納できる範囲は変わっていませんが、負の値は格納することができません。よって -10.12 のような負の値は格納しようとすると Out of range value for column 'カラム名' というエラーとなります。
insert into numtest values(-10.12);
ZEROFILL
データ型に ZEROFILL をつけるとデータ型の桁数分 0 で埋められます。
DECIMAL ZEROFILL
※ ZEROFILL を付けると自動的に UNSIGNED が付きます
例として DECIMAL(10, 5) ZEROFILL 型のカラムを持つテーブルを作成してみます。
create table numtest(num1 decimal(10, 5) zerofill);
データを追加した後でテーブルのデータを取得してみます。
insert into numtest values(16.725);
桁数分だけ0で埋められて表示されます。
-- --
MySQL で利用可能なデータ型の中で固定小数点数型の使い方について解説しました。
( Written by Tatsuo Ikura )

著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。