The following is a list of datatypes available in MySQL, which includes string, numeric, date/time, and large object datatypes.
The following are the String Datatypes in MySQL:
| Data Type Syntax | Maximum Size | Explanation |
|---|---|---|
| CHAR(size) | Maximum size of 255 characters. | Where size is the number of characters to store. Fixed-length strings. Space padded on right to equal size characters. |
| VARCHAR(size) | Maximum size of 255 characters. | Where size is the number of characters to store. Variable-length string. |
| TINYTEXT(size) | Maximum size of 255 characters. | Where size is the number of characters to store. |
| TEXT(size) | Maximum size of 65,535 characters. | Where size is the number of characters to store. |
| MEDIUMTEXT(size) | Maximum size of 16,777,215 characters. | Where size is the number of characters to store. |
| LONGTEXT(size) | Maximum size of 4GB or 4,294,967,295 characters. | Where size is the number of characters to store. |
| BINARY(size) | Maximum size of 255 characters. | Where size is the number of binary characters to store. Fixed-length strings. Space padded on right to equal size characters. (Introduced in MySQL 4.1.2) |
| VARBINARY(size) | Maximum size of 255 characters. | Where size is the number of characters to store. Variable-length string. (Introduced in MySQL 4.1.2) |
The following are the Numeric Datatypes in MySQL:
| Data Type Syntax | Maximum Size | Explanation |
|---|---|---|
| BIT | Very small integer value that is equivalent to TINYINT(1). Signed values range from -128 to 127. Unsigned values range from 0 to 255. | |
| TINYINT(m) | Very small integer value. Signed values range from -128 to 127. Unsigned values range from 0 to 255. | |
| SMALLINT(m) | Small integer value. Signed values range from -32768 to 32767. Unsigned values range from 0 to 65535. | |
| MEDIUMINT(m) | Medium integer value. Signed values range from -8388608 to 8388607. Unsigned values range from 0 to 16777215. | |
| INT(m) | Standard integer value. Signed values range from -2147483648 to 2147483647. Unsigned values range from 0 to 4294967295. | |
| INTEGER(m) | Standard integer value. Signed values range from -2147483648 to 2147483647. Unsigned values range from 0 to 4294967295. | This is a synonym for the INT datatype. |
| BIGINT(m) | Big integer value. Signed values range from -9223372036854775808 to 9223372036854775807. Unsigned values range from 0 to 18446744073709551615. | |
| DECIMAL(m,d) | Unpacked fixed point number. m defaults to 10, if not specified. d defaults to 0, if not specified. | Where m is the total digits and d is the number of digits after the decimal. |
| DEC(m,d) | Unpacked fixed point number. m defaults to 10, if not specified. d defaults to 0, if not specified. | Where m is the total digits and d is the number of digits after the decimal. This is a synonym for the DECIMAL datatype. |
| NUMERIC(m,d) | Unpacked fixed-point number. m defaults to 10, if not specified. d defaults to 0, if not specified. | Where m is the total digits and d is the number of digits after the decimal. This is a synonym for the DECIMAL datatype. |
| FIXED(m,d) | Unpacked fixed-point number. m defaults to 10, if not specified. d defaults to 0, if not specified. | Where m is the total digits and d is the number of digits after the decimal. (Introduced in MySQL 4.1) This is a synonym for the DECIMAL datatype. |
| FLOAT(m,d) | Single precision floating point number. | Where m is the total digits and d is the number of digits after the decimal. |
| DOUBLE(m,d) | Double precision floating point number. | Where m is the total digits and d is the number of digits after the decimal. |
| DOUBLE PRECISION(m,d) | Double precision floating point number. | Where m is the total digits and d is the number of digits after the decimal. This is a synonym for the DOUBLE datatype. |
| REAL(m,d) | Double precision floating point number. | Where m is the total digits and d is the number of digits after the decimal. This is a synonym for the DOUBLE datatype. |
| FLOAT(p) | Floating point number. | Where p is the precision. |
| BOOL | Synonym for TINYINT(1) | Treated as a boolean data type where a value of 0 is considered to be FALSE and any other value is considered to be TRUE. |
| BOOLEAN | Synonym for TINYINT(1) | Treated as a boolean data type where a value of 0 is considered to be FALSE and any other value is considered to be TRUE. |
The following are the Date/Time Datatypes in MySQL:
| Data Type Syntax | Maximum Size | Explanation |
|---|---|---|
| DATE | Values range from '1000-01-01' to '9999-12-31'. | Displayed as 'YYYY-MM-DD'. |
| DATETIME | Values range from '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. | Displayed as 'YYYY-MM-DD HH:MM:SS'. |
| TIMESTAMP(m) | Values range from '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC. | Displayed as 'YYYY-MM-DD HH:MM:SS'. |
| TIME | Values range from '-838:59:59' to '838:59:59'. | Displayed as 'HH:MM:SS'. |
| YEAR[(2|4)] | Year value as 2 digits or 4 digits. | Default is 4 digits. |
The following are the LOB Datatypes in MySQL:
| Data Type Syntax | Maximum Size | Explanation |
|---|---|---|
| TINYBLOB | Maximum size of 255 bytes. | |
| BLOB(size) | Maximum size of 65,535 bytes. | Where size is the number of characters to store (size is optional and was introduced in MySQL 4.1) |
| MEDIUMBLOB | Maximum size of 16,777,215 bytes. | |
| LONGTEXT | Maximum size of 4GB or 4,294,967,295 characters. |