The type of data field defined in MySQL is important for optimizing your database.
MySQL supports multiple types and can be broadly divided into three categories: numeric, date/time, and string (character) types.
Numeric Type
MySQL supports all standard SQL numeric data types.
These types include strict numeric data types (INTEGER, SMALLINT, Decimal, and numeric), as well as approximate numeric data types (FLOAT, real, and double PRECISION).
The keyword int is a synonym for integer, and the keyword Dec is a synonym for decimal.
The bit data type holds the bit field values and supports MyISAM, MEMORY, InnoDB, and BDB tables.
As an extension of the SQL standard, MySQL also supports integer types tinyint, Mediumint, and bigint. The following table shows the storage and scope of each integer type that is required.
type |
size |
Range (signed) |
Range (unsigned) |
Use |
TINYINT |
1 bytes |
(-128,127) |
(0,255) |
Small integer value |
SMALLINT |
2 bytes |
(-32 768,32 767) |
(0,65 535) |
Large integer value |
Mediumint |
3 bytes |
(-8 388 608,8 388 607) |
(0,16 777 215) |
Large integer value |
int or integer |
4 bytes |
(-2 147 483 648,2 147 483 647) |
(0,4 294 967 295) |
Large integer value |
BIGINT |
8 bytes |
(-9 233 372 036 854 775 808,9 223 372 036 854 775 807) |
(0,18 446 744 073 709 551 615) |
Maximum integer value |
FLOAT |
4 bytes |
( -3.402 823 466 e+38,1.175 494 351 E-38), 0, (1.175 494 351 e-38,3.402 823 466 351 e+38) |
0, (1.175 494 351 e-38,3.402 823 466 e+38) |
Single precision Floating point value |
DOUBLE |
8 bytes |
(1.797 693 134 862 315 7 e+308,2.225 073 858 507 201 4 E-308), 0, (2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+3 08) |
0, (2.225 073 858 507 201 4 e-308,1.797 693 134 862 315 7 e+308) |
Double precision Floating point value |
DECIMAL |
For decimal (m,d), if m>d, is m+2 otherwise d+2 |
Values that depend on M and D |
Values that depend on M and D |
Decimal value |
date and Time type
The date and time types that represent time values are datetime, date, TIMESTAMP, hour, and year.
Each time type has a valid value range and a value of "0", and a value of "0" is used when specifying an illegal MySQL value that cannot be represented.
The timestamp type has a proprietary Automatic Update feature, which is described later.
type |
size (bytes) |
Range |
format |
Use |
DATE |
3 |
1000-01-01/9999-12-31 |
Yyyy-mm-dd |
Date value |
Time |
3 |
' -838:59:59 '/' 838:59:59 ' |
HH:MM:SS |
Time Value or duration |
Year |
1 |
1901/2155 |
YYYY |
Year value |
Datetime |
8 |
1000-01-01 00:00:00/9999-12-31 23:59:59 |
YYYY-MM-DD HH:MM:SS |
Blend date and time values |
TIMESTAMP |
8 |
1970-01-01 00:00:00/2037, sometime |
YYYYMMDD HHMMSS |
Mixed date and time values, timestamp |
String Type
The string type refers to Char, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, enum, and set. This section describes how these types work and how they are used in queries.
type |
size |
purpose |
CHAR |
0-255 bytes |
fixed length string |
VARCHAR |
0-65535 bytes |
variable length string |
tinyblob |
0-255 bytes |
No more than 255 characters in a binary string |
tinytext |
0-255 bytes |
short text string |
BLOB |
0-65 535 bytes |
long text data in binary form |
text |
0-65 535 bytes |
long text data |
mediumblob |
0-16 777 215-byte |
medium-length text data in binary form |
mediumtext |
0-16 777 215 bytes |
medium-length text data |
logngblob |
0-4 294 967 295 bytes |
binary form of great text data |
LO Ngtext |
0-4 294 967 295 bytes |
great text data |
Char and varchar types are similar, but they are saved and retrieved in different ways. They are also different in terms of their maximum length and whether trailing spaces are retained. No case conversions are made during the storage or retrieval process.
Binary and varbinary classes are similar to char and varchar, but they contain binary strings rather than binary strings. That is, they contain a byte string instead of a character string. This means that they do not have a character set, and sort and compare numeric values based on column-valued bytes.
A blob is a binary large object that can hold a variable amount of data. There are 4 types of blobs: Tinyblob, BLOBs, Mediumblob, and Longblob. They can only accommodate the maximum length of a value differently.
There are 4 types of text: Tinytext, text, Mediumtext, and Longtext. These correspond to 4 types of blobs, with the same maximum length and storage requirements.
Original address: http://www.manongjc.com/mysql/mysql_data_types.html
Related reading:
In-depth study of MySQL exists and in performance and efficiency
MySQL exists and in use explain and difference introduction
MySQL subquery exists and not exists use methods and examples
MySQL where statement using method explained
MySQL distinct use method and example introduction
MySQL data type