(mysql.info) numeric-type-overview
Info Catalog
(mysql.info) data-type-overview
(mysql.info) data-type-overview
(mysql.info) date-and-time-type-overview
11.1.1 Overview of Numeric Types
--------------------------------
A summary of the numeric data types follows. For additional
information, see numeric-types. Type storage requirements are
given in storage-requirements.
M indicates the maximum display width. The maximum legal display width
is 255. Display width is unrelated to the storage size or range of
values a type can contain, as described in numeric-types.
If you specify `ZEROFILL' for a numeric column, MySQL automatically
adds the `UNSIGNED' attribute to the column.
`SERIAL' is an alias for `BIGINT UNSIGNED NOT NULL AUTO_INCREMENT
UNIQUE'.
`SERIAL DEFAULT VALUE' in the definition of an integer column is an
alias for `NOT NULL AUTO_INCREMENT UNIQUE'.
*Warning*: When you use subtraction between integer values where one is
of type `UNSIGNED', the result is unsigned. See cast-functions.
* `BIT[(M)]'
A bit-field type. M indicates the number of bits per value, from 1
to 64. The default is 1 if M is omitted.
This data type was added in MySQL 5.0.3 for `MyISAM', and extended
in 5.0.5 to `MEMORY', `InnoDB', and `BDB'. Before 5.0.3, `BIT' is
a synonym for `TINYINT(1)'.
* `TINYINT[(M)] [UNSIGNED] [ZEROFILL]'
A very small integer. The signed range is `-128' to `127'. The
unsigned range is `0' to `255'.
* `BOOL', `BOOLEAN'
These types are synonyms for `TINYINT(1)'. A value of zero is
considered false. Non-zero values are considered true.
In the future, full boolean type handling will be introduced in
accordance with standard SQL.
* `SMALLINT[(M)] [UNSIGNED] [ZEROFILL]'
A small integer. The signed range is `-32768' to `32767'. The
unsigned range is `0' to `65535'.
* `MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]'
A medium-sized integer. The signed range is `-8388608' to
`8388607'. The unsigned range is `0' to `16777215'.
* `INT[(M)] [UNSIGNED] [ZEROFILL]'
A normal-size integer. The signed range is `-2147483648' to
`2147483647'. The unsigned range is `0' to `4294967295'.
* `INTEGER[(M)] [UNSIGNED] [ZEROFILL]'
This type is a synonym for `INT'.
* `BIGINT[(M)] [UNSIGNED] [ZEROFILL]'
A large integer. The signed range is `-9223372036854775808' to
`9223372036854775807'. The unsigned range is `0' to
`18446744073709551615'.
Some things you should be aware of with respect to `BIGINT'
columns:
* All arithmetic is done using signed `BIGINT' or `DOUBLE'
values, so you should not use unsigned big integers larger
than `9223372036854775807' (63 bits) except with bit
functions! If you do that, some of the last digits in the
result may be wrong because of rounding errors when
converting a `BIGINT' value to a `DOUBLE'.
MySQL can handle `BIGINT' in the following cases:
* When using integers to store large unsigned values in a
`BIGINT' column.
* In `MIN(COL_NAME)' or `MAX(COL_NAME)', where COL_NAME
refers to a `BIGINT' column.
* When using operators (`+', `-', `*', and so on) where
both operands are integers.
* You can always store an exact integer value in a `BIGINT'
column by storing it using a string. In this case, MySQL
performs a string-to-number conversion that involves no
intermediate double-precision representation.
* The `-', `+', and `*' operators use `BIGINT' arithmetic when
both operands are integer values. This means that if you
multiply two big integers (or results from functions that
return integers), you may get unexpected results when the
result is larger than `9223372036854775807'.
* `FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]'
A small (single-precision) floating-point number. Allowable values
are `-3.402823466E+38' to `-1.175494351E-38', `0', and
`1.175494351E-38' to `3.402823466E+38'. These are the theoretical
limits, based on the IEEE standard. The actual range might be
slightly smaller depending on your hardware or operating system.
M is the total number of decimal digits and D is the number of
digits following the decimal point. If M and D are omitted, values
are stored to the limits allowed by the hardware. A
single-precision floating-point number is accurate to
approximately 7 decimal places.
`UNSIGNED', if specified, disallows negative values.
Using `FLOAT' might give you some unexpected problems because all
calculations in MySQL are done with double precision. See
no-matching-rows.
* `DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]'
A normal-size (double-precision) floating-point number. Allowable
values are `-1.7976931348623157E+308' to
`-2.2250738585072014E-308', `0', and `2.2250738585072014E-308' to
`1.7976931348623157E+308'. These are the theoretical limits, based
on the IEEE standard. The actual range might be slightly smaller
depending on your hardware or operating system.
M is the total number of decimal digits and D is the number of
digits following the decimal point. If M and D are omitted, values
are stored to the limits allowed by the hardware. A
double-precision floating-point number is accurate to
approximately 15 decimal places.
`UNSIGNED', if specified, disallows negative values.
* `DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]', `REAL[(M,D)]
[UNSIGNED] [ZEROFILL]'
These types are synonyms for `DOUBLE'. Exception: If the
`REAL_AS_FLOAT' SQL mode is enabled, `REAL' is a synonym for
`FLOAT' rather than `DOUBLE'.
* `FLOAT(P) [UNSIGNED] [ZEROFILL]'
A floating-point number. P represents the precision in bits, but
MySQL uses this value only to determine whether to use `FLOAT' or
`DOUBLE' for the resulting data type. If P is from 0 to 24, the
data type becomes `FLOAT' with no M or D values. If P is from 25
to 53, the data type becomes `DOUBLE' with no M or D values. The
range of the resulting column is the same as for the
single-precision `FLOAT' or double-precision `DOUBLE' data types
described earlier in this section.
`FLOAT(P)' syntax is provided for ODBC compatibility.
* `DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]'
For MySQL 5.0.3 and above:
A packed `exact' fixed-point number. M is the total number of
decimal digits (the precision) and D is the number of digits after
the decimal point (the scale). 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 65 (64 from 5.0.3 to 5.0.5).
The maximum number of supported decimals (D) is 30. If D is
omitted, the default is 0. If M is omitted, the default is 10.
`UNSIGNED', if specified, disallows negative values.
All basic calculations (`+, -, *, /') with `DECIMAL' columns are
done with a precision of 65 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 digits after the decimal point. 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 D is omitted, the default is 0. If M is
omitted, the default is 10.
`UNSIGNED', if specified, disallows negative values.
* `DEC[(M[,D])] [UNSIGNED] [ZEROFILL]', `NUMERIC[(M[,D])] [UNSIGNED]
[ZEROFILL]', `FIXED[(M[,D])] [UNSIGNED] [ZEROFILL]'
These types are synonyms for `DECIMAL'. The `FIXED' synonym is
available for compatibility with other database systems.
Info Catalog
(mysql.info) data-type-overview
(mysql.info) data-type-overview
(mysql.info) date-and-time-type-overview
automatically generated byinfo2html