We need to specify while designing the database, what type of data will be stored inside each column when creating a table in the database.
There are three main data types in MySQL:- string or text, numeric and date & time. We must use only the type and size of the field we really need to use. Eg: do not define a field for phone numbers with 50 characters wide, if you know you are only going to use an integer of 10 digits.
String or Text Data Types
Data type |
Size |
Description |
BINARY(size) |
0 to 255 |
Contains binary strings. |
BLOB(size) |
up to 65,535 bytes |
BLOB is a binary large object that can hold a variable amount of data. |
CHAR(size) |
0 to 255 |
The CHAR data type is a fixed-length character type in MySQL. |
ENUM |
1 or 2 bytes |
It allows us to limit the value chosen from a list of permitted values in the column specification at the time of table creation. |
LONGBLOB |
Up to 4 GB |
Each LONGBLOB value is stored using a four-byte length prefix that indicates the number of bytes in the value. |
LONGTEXT |
Up to 4 GB |
Holds a string. |
MEDIUMBLOB |
up to 16 MB |
Binary large Object |
MEDIUMTEXT |
up to 16 MB |
Holds a string |
SET |
1, 2, 3, 4, or 8 bytes |
A SET is a string object that can have zero or more values, each of which must be chosen from a list of permitted values. |
TEXT(size) |
up to 65,535 bytes |
Holds a string |
TINYBLOB |
Up to 255 bytes |
For BLOBs (Binary Large Objects). |
TINYTEXT |
Up to 255 bytes |
Holds a string |
VARBINARY(size) |
up to 65,535 bytes |
Contains binary strings. |
VARCHAR(size) |
up to 65,535 bytes |
A VARIABLE length string (can contain letters, numbers, and special characters). |
Numeric data types
Integer Types
Type |
Length in Bytes |
Minimum Value(Signed) |
Maximum Value (Signed) |
Minimum Value (Unsigned) |
Maximum Value (Unsigned) |
TINYINT |
1 |
-128 |
127 |
0 |
255 |
SMALLINT |
2 |
-32768 |
32767 |
0 |
65535 |
MEDIUMINT |
3 |
-8388608 |
8388607 to 0 |
16777215 |
INT |
4 |
-2147483648 |
2147483647 |
0 |
4294967295 |
BIGINT |
8 |
-9223372036854775808 |
9223372036854775807 |
0 |
18446744073709551615 |
Floating-Point Types
Data type |
Description |
FLOAT |
A precision from 0 to 23 results in a four-byte single-precision FLOAT column. |
DOUBLE |
A precision from 24 to 53 results in an eight-byte double-precision DOUBLE column. |
Boolean Value Types
Data type |
Description |
BOOL |
Zero is considered as false, nonzero values are considered as true. |
BOOLEAN |
Equal to BOOL. |
Date and Time Data Types
Data type |
Description |
Date |
A date. Format: YYYY-MM-DD. The supported range is from '1000-01-01' to '9999-12-31'. |
DATETIME |
The DATETIME type is used for values that contain both date and time. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD hh:mm:ss' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. |
TIMESTAMP |
The MySQL TIMESTAMP is a temporal data type that holds the combination of date and time. The format of a TIMESTAMP is YYYY-MM-DD HH:MM:SS. The supported range is from '1970-01-01 00:00:01' UTC to '2038-01-09 03:14:07' UTC. |
TIME |
The TIME data type can express the time of day or duration, and has a range of ‘-838:59:59’ to ‘838:59:59’. MySQL displays TIME values in ‘HH:MM:SS’ format. |
YEAR |
A year in four-digit format. Values allowed in four-digit format: 1901 to 2155, and 0000. |
Bit Value Types
The BIT data type is used to store bit-field values. A type of BIT(N) enables storage of N-bit values. N can range from 1 to 64.
To specify bit values, b 'value' notation can be used. value is a binary value written using zeros and ones. For example, b'111' and b'10000000' represent 7 and 128, respectively.
Data type |
Size |
Description |
DOUBLE(m,d) |
Double precision floating point number. |
Where m is the total digits and d is the number of digits after the decimal. |
DECIMAL(m,d) |
Unpacked fixed point number. |
Where m is the total digits and d is the number of digits after the decimal. |