Easy Tutorial
❮ Mysql Create Tables Mysql Database Info ❯

MySQL Data Types

Defining the type of data fields in MySQL is crucial for optimizing your database.

MySQL supports various types, which can be broadly categorized into three groups: numeric, date/time, and string (character) types.


Numeric Types

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 stores bit field values and is supported by MyISAM, MEMORY, InnoDB, and BDB tables.

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

Type Size Range (Signed) Range (Unsigned) Purpose
TINYINT 1 Byte (-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,223,372,036,854,775,808, 9,223,372,036,854,775,807) (0, 18,446,744,073,709,551,615) Very large 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+308) 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, it is M+2 otherwise D+2 Depends on M and D values Depends on M and D values Decimal value

Date and Time Types

Date and time types that represent temporal values are DATETIME, DATE, TIMESTAMP, TIME, and YEAR.

Each time type has a valid value range and a "zero" value, which is used when an invalid value that MySQL cannot represent is specified.

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

Type Size (bytes) Range Format Purpose
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' to '9999-12-31 23:59:59' YYYY-MM-DD hh:mm:ss Mixed date and time value
TIMESTAMP 4 '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC. The end time is the 2147483647th second, Beijing time 2038-1-19 11:14:07, Greenwich Mean Time January 19, 2038, 03:14:07 AM YYYY-MM-DD hh:mm:ss Mixed date and time value, timestamp

String Types

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

Type Size Purpose
CHAR 0-255 bytes Fixed-length string
VARCHAR 0-65535 bytes Variable-length string
TINYBLOB 0-255 bytes Binary string with a maximum of 255 characters
TINYTEXT 0-255 bytes Short text string
BLOB 0-65,535 bytes Long binary data
TEXT 0-65,535 bytes Long text data
MEDIUMBLOB 0-16,777,215 bytes Medium-length binary data
MEDIUMTEXT 0-16,777,215 bytes Medium-length text data
LONGBLOB 0-4,294,967,295 bytes Very large binary data
LONGTEXT 0-4,294,967,295 bytes Very large text data

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

CHAR and VARCHAR types are similar, but they differ in how they are stored and retrieved. They also differ in their maximum lengths and whether trailing spaces are retained. No case conversion occurs during storage or retrieval.

BINARY and VARBINARY are similar to CHAR and VARCHAR, except that they contain binary strings rather than non-binary strings. This means they do not have a character set, and sorting and comparison are based on the numeric values of the bytes in the column values.

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

There are four TEXT types: TINYTEXT, TEXT, MEDIUMTEXT, and LONGTEXT. Corresponding to the four BLOB types, they have different maximum storage lengths and can be chosen based on the actual situation.

❮ Mysql Create Tables Mysql Database Info ❯