   DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]


For MySQL 5.0.3 and above:

A packed ``exact'' fixed-point number. M is the total number of
digits and D is the number of decimals.  The decimal point and
(for negative numbers) the '-' sign are not counted in M.
If D is 0, values have no
decimal point or fractional part.  The maximum number of digits
(M) for DECIMAL is 64. The maximum number of supported
decimals (D) is 30.  If UNSIGNED is specified, negative
values are disallowed.

If D is omitted, the default is 0.  If M is omitted, the
default is 10.

All basic calculations (+, -, *, /) with DECIMAL columns are
done with a precision of 64 decimal digits.

Before MySQL 5.0.3:

An unpacked fixed-point number.  Behaves like a CHAR column;
``unpacked'' means the number is stored as a string, using one character for
each digit of the value.  M is the total number of digits and
D is the number of decimals.  The decimal point and (for negative
numbers) the '-' sign are not counted in M, although space for
them is reserved. If D is 0, values have no decimal point or
fractional part.  The maximum range of DECIMAL values is the same as
for DOUBLE, but the actual range for a given DECIMAL column
may be constrained by the choice of M and D.  If
UNSIGNED is specified, negative values are disallowed.

If D is omitted, the default is 0.  If M is omitted, the
default is 10.

Before MySQL 3.23:

As just described, with the exception that the M value must be large
enough to include the space needed for the sign and the decimal point
characters.

   DEC[(M[,D])] [UNSIGNED] [ZEROFILL]
   NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]
   FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]

These are synonyms for DECIMAL.  The FIXED synonym was added
in MySQL 4.1.0 for compatibility with other servers.
