35 Tipos de datos en MySQL

En este capítulo vamos a hablar sobre los tipos de datos que podemos almacenar en MySQL. Los sistemas relacionales se caracterizan por agrupar información en conjunto. Se puede almacenar prácticamente cualquier tipo de información. Cada dato que se almacena en una tabla se identifica como un nombre de campo y se caracteriza con un tipo de dato, que indica que características tiene la información en ese campo, y así, el sistema gestor de base de datos relacional optimiza el almacenamiento y el acceso.

MySQL nos permite almacenar una gran cantidad de tipos de datos, los cuales se pueden dividir en 3 secciones:

  • Datos numéricos
    • TINYING: enteros muy pequeños con o sin signo, con signo desde -128 hasta 127, y sin signo desde 0 hasta 255. Es muy útil por ejm para almacenar la edad de una persona, ya que ninguna persona va a vivir 255 años. Este tipo de dato ocupa en memoria 1 byte
    • SMALLINT: enteros pequeños con o sin signo, con signo desde -32.768 hasta 32.767, sin signo desde 0 hasta 65.535. Este tipo de dato ocupa en memoria 2 bytes
    • MEDIUMINT: enteros de tamaño medio con o sin signo. Ocupa en memoria 3 bytes
    • INTEGER: entero estándar con o sin signo. Ocupa en memoria hasta 4 bytes
    • BIGINT: entero grande con o sin signo. Ocupa en memoria hasta 8 bytes
    • DECIMAL: valores con decimales con precisión muy exacta. Se definen con precisión y escala. La precisión representa el número de dígitos decimales significativos, y la escala representa el número de dígitos que puede almacenarse a continuación del mundo decimal. Se usan principalmente en cálculos científicos, donde la precisión es muy exacta
    • NUMERIC: igual que el decimal
    • FLOAT: tipos numéricos aproximados en coma flotante, se puede indicar precisión (de 4 a 8 bytes). En este tipo la precisión no es tan relevante
    • DOUBLE: valores en punto flotante con doble precisión (8 bytes), permite almacenar mayor cantidad de decimales
  • Datos fecha
    • DATE: formato YYYY-MM-DD, primero debemos colocar el año con 4 dígitos, seguido de un guion, posteriormente colocar el mes seguido de un guion, y por último colocar el día. Otra opción es sustituir el guion por un slash (/). Las fechas válidas van desde el 1000-01-01 hasta el 9999-12-31. Este tipo de dato ocupará en memoria 3 bytes
    • TIME: formato HH:MM:SS. El espacio que ocupará en memoria es de 3 bytes
    • DATETIME: formato YYYY-MM-DD HH:MM:SS. Este tipo de dato ocupará 8 bytes
    • TIMESTAMP: es igual que el tipo DATETIME, y la diferencia es el rango de las fechas que almacenaremos, que van desde 1970-01-01 00:00:00 hasta 2037-12-31 23:59:59. Este tipo de dato ocupará en memoria 4 bytes
  • Cadenas de texto
    • CHAR(n): cadena de caracteres con longitud fija de n bytes. Los valores irán de 1 hasta 255. Ocupará el espacio especificado siempre
    • VARCHAR: cadena de caracteres con longitud variable. Se trata de un tipo de dato mucho más óptimo y recomendable a la hora de almacenar string. Los valores van desde 1 hasta 255, almacenará el valor que necesite, sin ocupar el espacio total especificado, por lo que si almacenamos 13 caracteres, utilizará tan sólo 13+1 bytes de memoria, y no los n caracteres que hayamos podido especificar
    • TEXT: texto con una longitud máxima de 65.535 (longitud + 2 bytes)
    • MEDIUMTEXT: permiten almacenar mas caracteres que el tipo de dato TEXT
    • LONGTEXT: permite almacenar más caracteres que el tipo de dato MEDIUMTEX
    • BLOB: objeto binario con longitud variable

Para el tipo número, en la mayoría de los casos vamos a utilizar el tipo de dato INTEGER y a veces vamos a utilizar el tipo TINYINT.