Tipo de datos MySQL

MySQL admite varios tipos de datos en varias categorías: muméricos, cadenas (caracteres y bytes), fecha y hora, espaciales y el tipo de datos JSON. Este capítulo proporciona una descripción resumida de estos tipos de datos.

1. Numerico

Por defecto los numeros estan firmados. Se puede poner UNSIGNED (nofirmado) si se quiere estender su rango a solo positivos. El ancho en () indica el ancho maximo de visualizacion. El ancho maximo de pantalla es 255.

Datos numericos
NombreBytesDescripcion
BIT1Valores entre 1 y 64.
TINYINT1Valores entre 0 y 155 o -128 a 127.
SMALLINT2Valores entre 0 y 65,535 o -32,768 a 32,767
MEDIUMINT3Valores entre 0 y 16'777,215 o -8'388,608 a 8'388,607
INT4Valores entre 0 y 4294'967,295 o -2147483648 a 2147583647
BIGINT8Valores entre 0 y 18446744073709551615
FLOAT8Numero flotante con presicion sencilla
DOUBLE4Numero flotante con presicion doble
DECIMALNumero flotante que se almacena como caracteres.

Cuando se crea un campo hay una columna opcional que indica Longitud/valor que en el caso de todos los tipos numericos indica el "ancho de visualizacion". Por ejemplo, INT(4) especifica que el tipo INT con un ancho de visualización de cuatro dígitos. Las aplicaciones pueden usar este ancho de visualización opcional para mostrar los valores enteros que tienen un ancho menor que el ancho especificado para la columna al rellenarlos con espacios. Esto no ahorra en nada el espacio separado que en el casos del INT siempre sera 4 bytes.

2. Cadena

Datos caraceres
NombreTamañoDescripcion
VARCHARMVariable en longitud. M<=255
TINYTEXTHasta 255No es sensible a mayusculas/minusculas
TEXTHasta 64 KNo es sensible a mayusculas/minusculas
MEDIUMTEXTHasta 16 MNo es sensible a mayusculas/minusculas
LONGTEXTHasta 4GNo es sensible a mayusculas/minusculas

3. Fecha

Si solo ingresa 2 digitos como años tenga en cuenta que 70~99 se refiere a 1970~1999 y que 00~69 se refiere a 2000~2069. MySQL permite poner 0 en el dia y mes, esto facilita ingresar fechas de nacimiento desconocidas como 2018-00-00 o 2018-07-00. Puede usar las funciones DATE_FORMAT(), DATE_ADD() y DATE_SUB()

Datos fecha
NombreTamañoDescripcion
DATE3En el formato AAAA-MM-DD
DATETIME8En el formato AAA-MM-DD HH:MM:SS
TIMESTAMP8En el formato AAA-MM-DD HH:MM:SS
TIME3En formato HHH:MM:SS donde HHH esta entre -838 y 838
YEAR1En formato AAAA entre los años 1901 y 2155

4. Otros

Datos otros
NombreTamañoDescripcion
BINARYMAlmacena cadenas de bytes
TINYBLOBHasta 255En el formato AAA-MM-DD HH:MM:SS
BLOBHasta 64 KEs sensible a mayusculas y minusculas
MEDIUMBLOBHasta 16 MEs sensible a mayusculas y minusculas
LONGBLOBHasta 4 GEs sensible a mayusculas y minusculas
JSONHasta 4 GDesde MySQL 5.7.8 se admite JSON nativo

5. Geoespaciales

Siguiendo la especificación Open Geospatial Consortium (OGC), MySQL implementa extensiones espaciales como un subconjunto del entorno SQL con tipos de geometría. Este término se refiere a un entorno SQL que se ha extendido con un conjunto de tipos de geometría. Un campo con valores geométricos se implementa como una columna que tiene un tipo de geometría. Permiten la generación, almacenamiento y análisis de características geográfica.