MySQL Data Types Quick Reference Table
MySQL Data Types Quick Reference Table
MySQL Data Types Quick Reference Table
0
Type {storage} Name Range Attributes Default
Numeric {1 byte}
TINYINT[(M)]
Numeric {2 bytes}
SMALLINT[(M)]
Numeric {3 bytes}
MEDIUMINT[(M)]
Numeric {4 bytes}
INT[(M)]
-/+2.147E+9 [0 to 4.294E+9]
Numeric {8 bytes}
BIGINT[(M)]
-/+9.223E+18 [0 to 18.45E+18]
Numeric {4 or 8}
FLOAT(p)
UNSIGNED, ZEROFILL
Numeric {4 bytes}
FLOAT[(M,D)]
Min=+/-1.175E-38 Max=+/-3.403E+38
UNSIGNED, ZEROFILL
Numeric {8 bytes}
DOUBLE[(M,D)]
Min=+/-2.225E-308 Max=+/-1.798E+308
UNSIGNED, ZEROFILL
Numeric {M+2}
UNSIGNED, ZEROFILL
Bit {8 bytes}
BIT[(M)]
String {M char's}
CHAR[(M)]
String {M char's1}
VARCHAR(M)
String {#char's1}
TINYTEXT2
0-255 Characters
String {#char's1}
TEXT2
0-65,535 Char's
String {#char's1}
MEDIUMTEXT2
0-16,777,215 Char's
String {#char's1}
LONGTEXT2
0-4,294,967,295 Char's
String {M bytes}
BINARY[(M)]
String {M bytes}
VARBINARY(M)
String {#bytes1}
TINYBLOB
0-255 bytes
String {#bytes1}
BLOB
0-65,535 bytes
String {#bytes1}
MEDIUMBLOB
0-16,777,215 bytes
String {#bytes1}
LONGBLOB
0-4,294,967,295 bytes
CHARACTER SET
CHARACTER SET
DATE
"1000-01-01" - "9999-12-31"
DATETIME
TIME
"-838:59:59" - "838:59:59"
NULL ["00:00:00" if
{3 bytes}
NOT NULL]
TIMESTAMP
19700101000000 2037+
YEAR
1900 - 2155
Notes:
1 2
Storage will be # of characters or bytes, plus byte(s) to record length. These String data types are NOT case sensitive, unless given the "binary"
attribute or have a case-sensitive CHARACTER SET collation. "E" is an abbreviation for "exponent". E18 means move the decimal over 18 places (search "scientific notation"). SERIAL DEFAULT VALUE attribute is an alias for "AUTO_INCREMENT NOT NULL UNIQUE". SERIAL data type is a synonym for "BIGINT UNSIGNED AUTO_INCREMENT NOT NULL UNIQUE". BOOL and BOOLEAN data types are synonyms for TINYINT(1). REAL[(M,D)] and DOUBLE PRECISION[(M,D)] datatypes are synonyms for DOUBLE[(M,D)]. REAL_AS_FLOAT system variable can make REAL[(M,D)] a synonym for FLOAT[(M,D)]. "UNSIGNED ZEROFILL" attributes: ZEROFILL means if you specify an M value for an integer, it will be padded with zeros to fill up the M spaces. Ex: M=6, integer=247, display="000247". UNSIGNED means no negative values and often expands your range. Corresponding non-binary and binary string types: o CHAR vs. BINARY o VARCHAR vs. VARBINARY o TEXT vs. BLOB