MySQL Money データ型

Mehvish Ashiq 2024年2月16日
MySQL Money データ型

このチュートリアルでは、MySQL に金額を格納するのに最適な DECIMAL(P,D) データ型を紹介します。

MySQL Money データ型

Money の値には、正確な表現が必要です。 たとえば、float などの近似データ型のみを使用する必要はありません。

通貨データを挿入するには、DECIMAL(P,D) などの 固定小数点数値データ型 を利用できます。

DECIMAL(P,D) は、列が最大 P 桁と D 小数を格納できることを示します。 PD は、構文の後に説明されています。

DECIMAL(P,D) データ型の列を定義できます。

# Syntax
columnName DECIMAL(P,D)

ここで、P は有効桁数を示す精度を表します。 その範囲は 1 から 65 です。

D はスケールですが、小数点以下の桁数を表します。 D の範囲は 030 です。

DECIMAL(P,D) を使用する場合、D<=P という条件を満たす必要があります。 そうしないと、エラーが発生します。 PD が指定されていない場合、DECIMAL タイプの列の最大桁数は 65 です。

DECIMAL タイプの列の範囲は、精度 (P) と位取り (D) に依存します。 IDMONEY の 2つの属性を持つテーブル demo を作成し、いくつかのデータを入力して、それを理解しましょう。

次のクエリを使用して、フォローアップすることができます。

コード例:

# create a table
CREATE table demo(
    ID INT NOT NULL PRIMARY KEY,
	MONEY DECIMAL(12,2) NOT NULL
);

# insert data
INSERT INTO demo VALUES
(1,1254367892.50),
(2,8754367893.60),
(3,9854367895.65),
(4,9224367896.70);

# display data
SELECT * FROM demo;

出力:

+----+---------------+
| ID | MONEY         |
+----+---------------+
|  1 | 1254367892.50 |
|  2 | 8754367893.60 |
|  3 | 9854367895.65 |
|  4 | 9224367896.70 |
+----+---------------+
4 rows in set (0.00 sec)

DECIMAL キーワードの代わりに FIXEDDEC、または NUMERIC キーワードを使用することもできます。これらのキーワードはすべて DECIMAL の同義語だからです。 次の例をデモンストレーションとして参照してください。

コード例:

# create a table
CREATE table demo1(
    ID INT NOT NULL PRIMARY KEY,
	MONEY FIXED(12,2) NOT NULL
);

# insert data
INSERT INTO demo1 VALUES
(1,1254367892.50),
(2,8754367893.60),
(3,9854367895.65),
(4,9224367896.70);

# display data
SELECT * FROM demo;

出力:

+----+---------------+
| ID | MONEY         |
+----+---------------+
|  1 | 1254367892.50 |
|  2 | 8754367893.60 |
|  3 | 9854367895.65 |
|  4 | 9224367896.70 |
+----+---------------+
4 rows in set (0.00 sec)

INT と同様に、DECIMAL データ型の ZEROFILL および UNSIGNED 属性を使用できます。 UNSIGNED 属性を使用すると、タイプ DECIMAL(P,D) UNSIGNED のテーブル フィールドは負の値を取ることができません。

たとえば、次のクエリを使用して作成されたテーブルは、MONEY フィールドの負の値を受け入れません。

コード例:

# create a table
CREATE table demo2(
    ID INT NOT NULL PRIMARY KEY,
    MONEY DECIMAL(12,2) UNSIGNED NOT NULL
);

ZEROFILL 属性を使用して、MySQL は列定義で指定された幅まで結果値を 0 で埋めます。

ZEROFILL 属性を使用すると、MySQL は自動的に UNSIGNED を追加することを思い出してください。 DESCRIBE tableName; を使用して確認できます。 クエリ。

例として次のコードを参照してください。

# create a table
CREATE table demo3(
    ID INT NOT NULL PRIMARY KEY,
    MONEY DECIMAL(12,2) ZEROFILL NOT NULL
);

# describe a table
DESCRIBE demo3;

出力:

+-------+---------------------------------+------+-----+---------+-------+
| Field | Type                            | Null | Key | Default | Extra |
+-------+---------------------------------+------+-----+---------+-------+
| ID    | int                             | NO   | PRI | NULL    |       |
| MONEY | decimal(12,2) unsigned zerofill | NO   |     | NULL    |       |
+-------+---------------------------------+------+-----+---------+-------+
2 rows in set (0.26 sec)

DECIMAL(P)DECIMAL(P,0) と同等であり、DECIMALDECIMAL(P,0) と同等であることを常に覚えておいてください。 DECIMAL(P,0)を使うことで小数部(小数部)が出なくなります。

DECIMAL(P)DECIMAL(P,0) の実装により、P の値を決定できます。 デフォルトの実装 DECIMAL を使用する場合、P のデフォルト値は 10 です。

詳しくはこちらをご確認ください。

著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook