The types of data fields defined in MySQL are very important for optimizing your database.

MySQL supports many types, which can be roughly divided into three categories: numeric, date/time, and string (character) types.


Numeric types

MySQL supports all standard SQL numeric data types.

These types include strictly 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 BIT field values and supports MyISAM, MEMORY, InnoDB, and BDB tables.

As an extension to the SQL standard, MySQL also supports the integer types TINYINT, MEDIUMINT, and BIGINT. The table below shows the storage and range required for each integer type.

type The size of the Range (signed) Scope (unsigned) use
TINYINT 1 byte (128127) (0255). A small integer value
SMALLINT 2 bytes (-32 768,32 767) ,65 (0 535). Large integer value
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) Large integer value
INT or an INTEGER 4 bytes (-2,147,483,648, 2,147,483,647) (0,4 294 967 295) Large integer value
BIGINT 8 bytes (-9,223,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.494 369 E+38), 0, (1.494 369 E+38, 3.402 823 466 369 E+38) 0, (1.175 494 369 E-38, 3.402 823 466 E+38) Single-precision floating point value
DOUBLE 8 bytes (-1.797 693 134 862 391 7e +308, -2.797 858 858 391 4 e-308), 0, (2.797 858 858 391 4 e-308, 1.797 693 134 862 315 7 E+308) 0, (1.797 693 134 862 315 7 E+308) Double – precision floating – point value
DECIMAL For DECIMAL(M,D), M+2 if M>D otherwise D+2 Depends on the values of M and D Depends on the values of M and D Small numerical

Date and time types

The DATE and TIME types representing TIME values are DATETIME, DATE, TIMESTAMP, TIME, and YEAR.

Each time type has a valid value range and a “zero” value, which is used when specifying invalid values that MySQL cannot represent.

The TIMESTAMP type has a proprietary auto-update feature, which is described later.

type Size (bytes) The scope of format use
DATE 3 The 1000-01-01/1000-01-01 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 The 1000-01-01 00:00:00/1000-01-01 23:59:59 YYYY-MM-DD HH:MM:SS Mixes date and time values
TIMESTAMP 4 1970-01-01 00:00:00/2038 end time is no2147483647Second, Beijing timeThe 2038-1-19 11:14:07At 03:14:07 GMT on January 19, 2038 YYYYMMDD HHMMSS Mix date and time values, time stamps

String type

The string types are CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, and SET. This section describes how these types work and how to use them in queries.

type The size of the use
CHAR 0-255 bytes Fixed length string
VARCHAR 0-65535 bytes Variable length string
TINYBLOB 0-255 bytes A binary string of up to 255 characters
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 bytes Medium length text data in binary form
MEDIUMTEXT 0-16 777 215 bytes Medium length text data
LONGBLOB 0-4 294 967 295 bytes Very large text data in binary form
LONGTEXT 0-4 294 967 295 bytes Maximal text data

Note: the n in parentheses for char(n) and varchar(n) represents the number of characters, not the number of bytes. For example, char(30) can store 30 characters.

The CHAR and VARCHAR types are similar, but they are saved and retrieved differently. They also differ in terms of maximum length and whether trailing Spaces are reserved. There is no case conversion during storage or retrieval.

BINARY and VARBINARY are similar to CHAR and VARCHAR except that they contain BINARY strings rather than non-binary strings. That is, they contain byte strings instead of character strings. This means that they have no character set and sort and compare numeric values based on column value bytes.

A BLOB is a large binary object that can hold a variable amount of data. There are four types of BLOB: TINYBLOB, BLOB, MEDIUMBLOB, and LONGBLOB. They differ in the range of storage that can be accommodated.

There are four types of TEXT: TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT. The maximum storage length of the four BLOB types varies according to the actual situation.