MySQL admite varios tipos de datos en varias categorías: numé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.
Por defecto los números están firmados. Se puede poner UNSIGNED (nofirmado) si se quiere entender su rango a solo positivos. El ancho en () indica el ancho máximo de visualización. El ancho máximo de pantalla es 255.
Nombre | Bytes | Descripción |
---|---|---|
BIT | 1 | Valores entre 1 y 64. |
TINYINT | 1 | Valores entre 0 y 155 o -128 a 127. |
SMALLINT | 2 | Valores entre 0 y 65,535 o -32,768 a 32,767 |
MEDIUMINT | 3 | Valores entre 0 y 16'777,215 o -8'388,608 a 8'388,607 |
INT | 4 | Valores entre 0 y 4294'967,295 o -2147483648 a 2147583647 |
BIGINT | 8 | Valores entre 0 y 18446744073709551615 |
FLOAT | 8 | Numero flotante con precisión sencilla |
DOUBLE | 4 | Numero flotante con precisión doble |
DECIMAL | Numero 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 numéricos indica el "ancho de visualización". 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.
Nombre | Tamaño | Descripción |
---|---|---|
VARCHAR | M | Variable en longitud. M<=255 |
TINYTEXT | Hasta 255 | No es sensible a mayúsculas/minúsculas |
TEXT | Hasta 64 K | No es sensible a mayúsculas/minúsculas |
MEDIUMTEXT | Hasta 16 M | No es sensible a mayúsculas/minúsculas |
LONGTEXT | Hasta 4G | No es sensible a mayúsculas/minúsculas |
Nombre | Tamaño | Descripción |
---|---|---|
DATE | 3 | En el formato AAAA-MM-DD |
DATETIME | 8 | En el formato AAA-MM-DD HH:MM:SS |
TIMESTAMP | 8 | En el formato AAA-MM-DD HH:MM:SS |
TIME | 3 | En formato HHH:MM:SS donde HHH esta entre -838 y 838 |
YEAR | 1 | En formato AAAA entre los años 1901 y 2155 |
Si solo ingresa 2 dígitos 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()
Nombre | Tamaño | Descripción |
---|---|---|
BINARY | M | Almacena cadenas de bytes |
TINYBLOB | Hasta 255 | En el formato AAA-MM-DD HH:MM:SS |
BLOB | Hasta 64 K | Es sensible a mayúsculas y minúsculas |
MEDIUMBLOB | Hasta 16 M | Es sensible a mayúsculas y minúsculas |
LONGBLOB | Hasta 4 G | Es sensible a mayúsculas y minúsculas |
JSON | Hasta 4 G | Desde MySQL 5.7.8 se admite JSON nativo |
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.