MySQL データ型 DECIMAL の使用方法の詳細な説明

MySQL データ型 DECIMAL の使用方法の詳細な説明

MySQL DECIMALデータ型は、データベースに正確な数値を保存するために使用されます。会計システムの通貨データなど、正確な精度を保持する列には、 DECIMALデータ型がよく使用されます。

DECIMALデータ型の列を定義するには、次の構文を使用します。

列名 DECIMAL(P,D);

上記の構文では、

  • Pは有効数字の数を示す精度です。 Pの範囲は1〜65です。
  • D小数点以下の桁数を表します。 Dの範囲は030です。 MySQL では、 D P以下 ( <= ) である必要があります。

DECIMAL(P,D)列に小数点以下D桁のP桁を格納できることを意味します。小数列の実際の範囲は、精度とスケールによって異なります。

INT データ型と同様に、 DECIMALデータ型にもUNSIGNED属性とZEROFILL属性があります。 UNSIGNED属性が使用されている場合、 DECIMAL UNSIGNED列は負の値を受け入れません。

ZEROFILLを使用すると、MySQL は表示される値に0を埋め込んで、列定義で指定された幅を表示します。 さらに、 DECIMAL列にZERO FILLを使用すると、MySQL は列にUNSIGNED属性を自動的に追加します。

次の例では、 DECIMALデータ型を使用してamountという列を定義します。

金額 DECIMAL(6,2);

この例では、 amount列には小数点以下2桁を含む最大6桁を格納できるため、 amount列の範囲は-9999.99から9999.99になります。

MySQL では次の構文が許可されます。

列名 DECIMAL(P);

これは次と同等です:

列名 DECIMAL(P,0);

この場合、列には小数部または小数点は含まれません。

さらに、次の構文を使用することもできます。

列名 DECIMAL;

この場合、 Pのデフォルト値は10です。

MySQL DECIMAL ストレージ

MySQL は整数部分と小数部分に別々にストレージスペースを割り当てます。 MySQL はバイナリ形式を使用してDECIMAL値を保存します。 9桁を4バイトにパックします。

各部分では、 9ビットの数値の各倍数を格納するために4バイトが必要です。残りの数値に必要なストレージは次の表に示されています。

残り数少し
0 0
1–2 1
3~4 2
5~6歳3
7-9 4

たとえば、 DECIMAL(19,9)は小数部に9桁、整数部に19 = 10桁あり、小数部に4バイトが必要です。 整数部分には、最初の9桁に4バイト、残りの1桁に1バイトが必要です。 DECIMAL(19,9)列には合計9バイトが必要です。

MySQL DECIMAL データ型と通貨データ

価格、給与、口座残高などの金銭データでは、多くの場合、 DECIMALデータ型が使用されます。通貨データを扱うデータベースを設計したい場合は、次の構文を参考にしてください。

金額 DECIMAL(19,2);

ただし、一般に認められた会計原則 (GAAP) のルールに準拠する場合は、四捨五入した値が$0.01超えないように、通貨列に少なくとも4桁の小数点以下を含める必要があります。 この場合、小数点以下4桁の列は次のように定義する必要があります。

金額 DECIMAL(19,4);

MySQL DECIMAL データ型の例

まず、 iddescriptioncost 3 つの列を持つtest_orderという新しいテーブルを作成します。

テーブルtest_orderを作成します(
 id INT AUTO_INCREMENT 主キー、
 説明 VARCHAR(255)、
 コスト DECIMAL(19,4) NOT NULL
);

2 番目のステップは、test_order テーブルにデータを挿入することです。

test_orderにINSERT(説明、コスト)
VALUES('自転車', 500.34),('シート',10.23),('休憩',5.21);

3 番目のステップは、test_order テーブルからデータをクエリすることです。

test_orderから*を選択

查詢結果:

ステップ 4. cost列を変更して、 ZEROFILL属性を含めます。

ALTER TABLE test_order
MODIFY コスト DECIMAL(19,4) ゼロフィル;

ステップ 5. test_order テーブルを再度クエリします。

test_orderから*を選択

クエリ結果:

上記のように、出力値には多くのゼロが埋め込まれています。

ゼロフィルのため、負の値を挿入するとエラーが発生します。

test_orderにINSERT(説明、コスト)
VALUES('テスト', -100.11);
<br>ヒント:
[SQL]INSERT INTO test_order(説明、コスト)
VALUES('テスト', -100.11)

[エラー] 1264 - 行 1 の列 'cost' の値が範囲外です

その他の挿入テストの結論:

値が範囲内にあり、小数点以下の桁数がさらにある場合、四捨五入後、余分な小数点以下の桁数は直接切り捨てられます。

値が範囲外の場合、範囲外値エラーが直接報告されます。

MySQL データ型 DECIMAL の詳しい使い方については、これで終わりです。MySQL データ型 DECIMAL の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL における 10 進数型の使用法の簡単な紹介
  • MySQL における Decimal 型と Float Double 型の違い (詳細説明)
  • MySQL データ型 DECIMAL(N,M) における N と M の意味の詳細な説明
  • 科学的記数法の数値文字列を 10 進数型に変換する方法
  • データベースのデータ型 float から C# の型 10 進数への変換、float データ型の変換は無効です
  • MySQL データ型における DECIMAL の使用法の詳細な説明
  • mysql 10進データ型変換の実装
  • MySQL の 10 進数データ型の小数点埋め込み問題の詳細な説明
  • データベースにおける Decimal 型の使用と実装の詳細な説明

<<:  js配列forEachインスタンスの詳細な使用方法

>>:  Windows Server 2016 リモート デスクトップ サービスの構成とライセンスのアクティブ化 (2 ユーザー)

推薦する

Vue ソースコード学習でレスポンシブ性を実装する方法

目次序文1. レスポンシブシステムの重要な要素1. データの変更を監視する方法2. 依存関係を収集す...

MySQL 演算子の具体的な使用法 (and、or、in、not)

目次1. はじめに2. 本文2.1 および演算子2.2 または演算子2.3 オペレーター2.4 no...

Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル

目次ZabbixはNginxを監視するZabbixはTomcatを監視するZabbixはMySQLを...

計算機機能を実装するミニプログラム

この記事の例では、計算機機能を実装するためのミニプログラムの具体的なコードを参考までに共有しています...

この記事は、JQueryの基本的な操作を理解し、始めるのに役立ちます。

目次1. Jquery を使用する手順: (1)jsライブラリをインポートする(2)ページ読み込みイ...

Vue フロントエンド開発における keepAlive の使用方法の詳細な説明

目次序文keep-avlive フック関数keep-avliveはどのコンポーネントをキャッシュする...

Vue3 コンポジション API でロジックの再利用を実装する方法

Composition API はロジック再利用手順を実装します。ロジックコードを関数に抽出します。...

XAML でボタンを円として再描画する方法

XAML レイアウトを使用する場合、インターフェイスを Metro 風にするために、一部のボタンでは...

MySQLのUPDATE文の落とし穴を記録する

背景最近、オンライン操作中に DML ステートメントを実行しました。これは絶対確実だと思っていました...

Viteは仮想ファイルの実装を導入します

目次背景仮想ファイルのインポート例書類タイプスクリプトのサポート要約する背景新しいプロジェクトで v...

Reactは複雑な検索フォームの展開と折りたたみ機能を実装します

時間に余裕を持って、過去を忘れましょう。前のセクションでは、[検索] フォームとクエリおよびリセット...

...

MySQLのグローバルロックとテーブルロックに関する詳細な理解

序文ロックの範囲に応じて、MySQL のロックは、グローバル ロック、テーブル ロック、行ロックに大...

VMware14 に CentOS 7 をインストールするグラフィック チュートリアル

CentOS の紹介CentOS は、Red Hat Linux が提供する無料で利用できるソースコ...