DECIMAL(M, D) カラムでは、MySQL は D の範囲を 0 ~ 30 にするオプションを提供します。
0 のオプションが欠落している微妙な理由はありますか? 小数点以下のない小数は整数ではありませんか?
小数点以下の桁数のない DECIMAL を指定する必要があるのは、いつ、どのような場合ですか?
DECIMAL(M, D) カラムでは、MySQL は D の範囲を 0 ~ 30 にするオプションを提供します。
0 のオプションが欠落している微妙な理由はありますか? 小数点以下のない小数は整数ではありませんか?
小数点以下の桁数のない DECIMAL を指定する必要があるのは、いつ、どのような場合ですか?
DECIMAL タイプの数値範囲は、INTEGER または BIGINT の場合よりもはるかに大きくなります。DECIMAL(65, 0) に格納できる最大数は 65 ナインです。BIGINT の最大数は 18446744073709551615 です。
DECIMAL(x, 0) は、小さい数値の場合、多くの場合、少し高価になります。数値がそれらのいずれかの範囲内にある場合は、定義済みのINTEGER 型の使用を検討してください。
DECIMAL(x, 0) フィールドのバイト単位のストレージ要件は、次のx
式に従って異なります。
Storage = x / 9 + Leftover
Leftover = round_up((x % 9) / 2) (i.e., about half of the leftover digits)
数値型のストレージ要件の詳細については、MySQL のマニュアルを参照して、自分で比較してください。
より大きい値を格納できるようにする以外BIGINT
に、次の場合に使用できDECIMAL(x,0)
ます。
範囲内の値を許可-9, ... , +9
: 使用DECIMAL(1,0)
(1 バイトを使用)
範囲内の値を許可-99, ... , +99
: 使用DECIMAL(2,0)
(1 バイトを使用)
範囲内の値を許可-999, ... , +999
: 使用DECIMAL(3,0)
(2 バイトを使用)
範囲内の値を許可-9999, ... , +9999
: 使用DECIMAL(4,0)
(2 バイトを使用)
...
-999999999, ... , +999999999
: 使用DECIMAL(9,0)
(4 バイトを使用)... etc (最大DECIMAL(65,0)
で 29 バイトを使用)
ビッグでは、18 446 744 073 709 551 615以下の数字しか格納できません。これは20桁ですが、DECIMALでは65桁でも格納できます。また、intを使用すると、桁数を低い数(たとえば、1)に直接制限することはできません。したがって、より柔軟性があり、既存のデータベースで拡張する必要がある場合は、より簡単です。
Mysql では、Decimal(3,2) は 3.42 のように合計 3 桁と小数点以下 2 桁を意味します。
Decimal(3,0) は、合計 3 桁で、345 のように小数点以下の桁がないことを意味します。指定された範囲を超えて小数点の括弧内に何かを記述しても、Mysql は自動的にそれらを 000 または 999 に更新します。