序文: 金額の保存など、小数点数を保存し、精度要件がある場合、通常は DECIMAL フィールド タイプの使用を検討します。おそらく、ほとんどの学生は DECIMAL タイプについて少ししか理解しておらず、詳細はあまり明確ではありません。この記事では、最初から DECIMAL フィールド タイプの使用シナリオと方法について説明します。 1. DECIMAL型の紹介 DECIMAL は MySQL 5.1 で導入されました。列宣言構文は DECIMAL(M,D) です。 NUMERIC は DECIMAL と同義です。フィールド タイプが NUMERIC として定義されている場合、自動的に DECIMAL に変換されます。 宣言構文 DECIMAL(M,D) の場合、独立変数の値の範囲は次のとおりです。
たとえば、給与のDECIMAL(5,2)フィールドには、5桁と小数点以下2桁の任意の値を格納できるため、給与列に格納できる値の範囲は-999.99〜999.99になります。 2. DECIMALの実際の使用 次に、DECIMAL フィールド タイプの使用を確認するためのテスト テーブルを作成します。 # DECIMALフィールドを持つテーブルを作成し、decimalのデフォルト値がdecimal(10,0)であることを確認します。 mysql> テーブルdecimal_tbを作成します(col1decimal、col2decimal(5,2)); クエリは正常、影響を受けた行は 0 行 (0.04 秒) mysql> テーブル作成を表示decimal_tb\G ************************** 1. 行 **************************** テーブル:decimal_tb テーブルの作成: CREATE TABLE `decimal_tb` ( `col1` 小数点(10,0) デフォルト NULL, `col2` 小数点(5,2) デフォルト NULL ) エンジン=InnoDB デフォルト文字セット=utf8 セット内の 1 行 (0.00 秒) # データ挿入テスト# 結論: 保存範囲を超えると、エラーが報告されます。小数点以下の桁数が足りない場合は、0 が自動的に追加されます。最初の桁が 0 の場合は、自動的に無視されます。小数点以下の桁数が範囲を超えると、数値は切り捨てられ、四捨五入されます。 mysql>decimal_tb (col1,col2) に値 (100,100) を挿入します。 クエリは正常、1 行が影響を受けました (0.05 秒) mysql>decimal_tb(col2)の値(1.23)に挿入します。 クエリは正常、1 行が影響を受けました (0.01 秒) mysql>decimal_tb(col2)の値(10.2)に挿入します。 クエリは正常、1 行が影響を受けました (0.01 秒) mysql>decimal_tb(col2)の値(09.9)に挿入します。 クエリは正常、1 行が影響を受けました (0.01 秒) mysql>decimal_tbから*を選択します。 +------+--------+ | 列1 | 列2 | +------+--------+ | 100 | 100.00 | | NULL | 1.23 | | NULL | 10.20 | | NULL | 9.90 | +------+--------+ セット内の 4 行 (0.00 秒) mysql>decimal_tb(col2)の値(9999)に挿入します。 エラー 1264 (22003): 行 1 の列 'col2' の値が範囲外です mysql>decimal_tb (col2) に値 (12.233) を挿入します。 クエリは正常、1 行が影響を受け、1 つの警告 (0.01 秒) mysql> 警告を表示します。 +-------+------+--------------------------------------------------------+ | レベル | コード | メッセージ | +-------+------+--------------------------------------------------------+ | 注意 | 1265 | 行 1 の列 'col2' のデータが切り捨てられました | +-------+------+--------------------------------------------------------+ セット内の 1 行 (0.00 秒) mysql>decimal_tb (col2) に値 (12.2300) を挿入します。 クエリは正常、1 行が影響を受けました (0.01 秒) # 変数範囲テスト# 結論: M の範囲は 1 から 65、D の範囲は 0 から 30、D は M より大きくない mysql> テーブルdecimal_tbを変更し、列col3decimal(6,6)を追加します。 クエリは正常、影響を受けた行は 0 行 (0.12 秒) レコード: 0 重複: 0 警告: 0 mysql> テーブルdecimal_tbを変更し、列col4decimal(6,7)を追加します。 エラー 1427 (42000): float(M,D)、double(M,D)、またはdecimal(M,D) の場合、M は >= D (列 'col4') である必要があります。 mysql> テーブルdecimal_tbを変更し、列col4decimal(65,2)を追加します。 クエリは正常、影響を受けた行は 0 行 (0.11 秒) レコード: 0 重複: 0 警告: 0 mysql> テーブルdecimal_tbを変更し、列col4decimal(66,2)を追加します。 エラー 1426 (42000): 'col4' に指定された精度 66 は大きすぎます。最大値は 65 です。 mysql> テーブルdecimal_tbを変更し、列col5をdecimal(60,30)に追加します。 クエリは正常、影響を受けた行は 0 行 (0.13 秒) レコード: 0 重複: 0 警告: 0 mysql> テーブルdecimal_tbを変更し、列col6decimal(60,31)を追加します。 エラー 1425 (42000): 列 'col6' に指定されたスケール 31 は大きすぎます。最大値は 30 です。 3. DECIMALの使用法のまとめ 上記の内容では、実用的な観点からDECIMAL型の使い方と注意事項を紹介しました。floatやdoubleなどの浮動小数点型も小数を格納できることはご存知かもしれませんが、ここでは詳しく紹介しません。float型とdouble型は、特に合計計算を行うときに正確さを保証できず、エラーが発生しやすいことを思い出してください。したがって、小数を格納する場合、特に金額が関係する場合は、DECIMAL型を使用することをお勧めします。 DECIMAL を使用する際に注意すべき点を以下にまとめます。
要約: この記事は比較的シンプルで実用的です。これを読めば、DECIMAL フィールドの使用シナリオと注意事項が理解できるでしょう。実際、一般的なフィールド タイプについては、使用シナリオと注意事項を理解するだけで十分です。テーブルを作成するときの目標は、適切なフィールド タイプをすばやく選択できるようにすることです。たとえば、小数を格納する必要がある場合は、DECIMAL タイプを使用し、ビジネス ニーズに応じて適切な精度を選択すれば、作業が簡単になります。 上記は、MySQL データ型 DECIMAL の詳細な分析の内容です。MySQL データ型 DECIMAL の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Linux で xargs コマンドを使用する詳細なチュートリアル
>>: Vue3 でパンくず関数コンポーネントをカプセル化するいくつかの方法
目次1. カスタム指示1. グローバルカスタム指示を登録する2. グローバルカスタム指示を使用する3...
目次事前準備実施方法: 1. 単一のデータを挿入する2. マージデータ挿入3. MySqlBulkL...
インターネットには、真実のように見える「噂」がたくさんあります。もちろん、悪意のあるものではありませ...
序文システムをインストールしたときに、パーティション領域を適切に割り当てませんでした。その後のメンテ...
最近のブラウザでは、CSS 内で JavaScript を実行することはできなくなりました。以前は、...
最近の問題としては、次のような現象があります。システムには、docker run コマンドを継続的に...
ソフトウェアのグリーンバージョンとインストールバージョンの違いは何ですか?通常、ファイルのインストー...
k8s の最小のスケジューリング単位 --- pod前回の記事では、k8s が解決できる問題を簡単に...
MySQL バックアップコールドバックアップ:停止服務進行備份,即停止數據庫的寫入ホットバックアップ...
目次1. イメージをプルする2. ローカルデータボリュームを作成する3. コンテナを作成する4. J...
目次MySQL Load Dataの多様な用途1. LOAD の基本的な背景2. 基本パラメータをロ...
1. DNSサーバーの概念インターネットでの通信には IP アドレスの助けが必要ですが、数字に対する...
Xiaobai は vmtools のインストールを記録します。 1. 意義と機能: VMWARE ...
1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...