MySQL es considerado como el manejador de bases de datos más utilizado en el mundo en los últimos tiempos. Su licencia de código abierto facilita su uso tanto académico como en el ámbito industrial.
Lo primero que hay que conocer al momento de incursionar en el mundo de las bases de datos es precisamente eso: cuáles son los datos que pueden almacenarse, ya que en los sistemas de la información son la materia prima.
Cada sistema administrador de base de datos ha sido diseñado y orientado hacia un uso específico. En el caso de los tipos de datos en MySQL, por su historia, son de un gran abanico, incluso evolucionando para adaptarse a las necesidades que van surgiendo en el desarrollo de sistemas. Por ejemplo, almacena datos de tipo JSON (JavaScript Object Notation) o datos que abstraen conceptos como la posición espacial de un objeto.
«Cada valor manipulado por una base datos Oracle tiene un tipo de dato», así es como lo describe la documentación oficial de Oracle. Además, hace hincapié en que cada tipo de datos asocia un conjunto finito de propiedades al valor en cuestión, es decir, el tipo de dato define las características con las que debe cumplir el dato para poder ser almacenado.
Cuando se crea una tabla se debe especificar el tipo de datos que se almacenará en cada una de las columnas. Esto acota las propiedades que debe tener el dato que se pretenda guardar en dichas columnas para así asegurar su integridad; en otras palabras, sirve para afianzar que los datos siempre sean correctos y completos.
5 tipos de datos en MySQL
- Numérico
- Fecha y marca temporal
- Cadena
- Espacial
- JSON
Por la naturaleza de cada dato, en MySQL podemos definir cinco grandes grupos al momento de tipificar los datos que se van a almacenar en nuestra base. Cada uno de ellos contiene subtipos que especializan el tipo de datos para definirlo completa y unívocamente.
1. Numérico
TINYINT
Permite números desde -128 hasta 127.
Si se define como UNSIGNED (sin signo) permite números desde 0 hasta 255.
SMALLINT
Permite números desde -32768 hasta 32767.
Si se define como UNSIGNED (sin signo) permite números desde 0 hasta 65535.
MEDIUMINT
Permite números desde -8388608 hasta 8388607.
Si se define como UNSIGNED (sin signo) permite números desde 0 hasta 16777215.
INT
Permite números desde -2147483648 hasta 2147483647.
Si se define como UNSIGNED (sin signo) permite números desde 0 hasta 4294967295.
BIGINT
Permite números desde -9223372036854775808 hasta 9223372036854775807.
Si se define como UNSIGNED (sin signo) permite números desde 0 hasta 18446744073709551615.
Para los siguientes tipos se puede especificar el número máximo de dígitos y el número de decimales. Por ejemplo: (6,2) tendrá 4 dígitos enteros y 2 decimales dando un tamaño total de 6, por ejemplo, 1234.56.
DECIMAL
Permite almacenar números decimales de punto fijo grandes, por lo que sus cálculos son exactos.
FLOAT
Permite almacenar números decimales de punto flotante pequeños, por lo que sus cálculos son aproximados.
DOUBLE
Permite almacenar números decimales de punto flotante grandes, por lo que sus cálculos son aproximados.
2. Fecha y marca temporal
DATE
Permite almacenar una fecha con el formato YYYY-MM-DD (4 dígitos para el año, 2 dígitos para el mes y 2 dígitos para el día).
DATETIME
Permite almacenar fecha y hora con el formato YYYY-MM-DD HH:MM:SS (4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, 2 dígitos para las horas, 2 dígitos para los minutos y 2 dígitos para los segundos).
El rango soportado es de '1000-01-01 00:00:00' a '9999-12-31 23:59:59'.
TIMESTAMP
Permite almacenar fecha y hora con el formato YYYY-MM-DD HH:MM:SS (4 dígitos para el año, 2 dígitos para el mes, 2 dígitos para el día, 2 dígitos para las horas, 2 dígitos para los minutos y 2 dígitos para los segundos).
El rango soportado es de '1970-01-01 00:00:01' UTC a '2038-01-19 03:14:07' UTC.
TIME
Permite almacenar la hora con el formato HH:MM:SS (2 dígitos para las horas, 2 dígitos para los minutos y 2 dígitos para los segundos).
YEAR
Permite almacenar el año con el formato YYYY (4 dígitos para los años).
3. Cadena
CHAR
Permite almacenar una cadena de datos con longitud fija. Siempre reservará espacio para la longitud definida aunque no se utilice. La longitud máxima es de 255.
VARCHAR
Permite almacenar una cadena de datos (caracteres, números y caracteres especiales) con longitud variable. No reserva el espacio de la longitud máxima definida, ya que ocupa espacio del tamaño real de los datos. La longitud máxima es de 255.
TINYTEXT
Permite almacenar una cadena de datos (solo caracteres; no admite números ni caracteres especiales) de una longitud máxima de 255 caracteres.
TEXT
Permite almacenar una cadena de caracteres de longitud máxima de 65,535.
MEDIUMTEXT
Permite almacenar una cadena con una longitud máxima de 16,777,215 caracteres.
LONGTEXT
Permite almacenar una cadena de longitud máxima de 4,294,967,295 caracteres.
BLOB
Permite almacenar datos de tipo BLOB (Binary Large Object). Admite una longitud máxima de 65,535 bytes de datos.
MEDIUMBLOB
Permite almacenar datos tipo BLOB con una longitud máxima de 16,777,215 bytes.
LONGBLOB
Permite almacenar un BLOB de longitud máxima de 4.294,967,295 bytes.
ENUM
Permite definir una lista de posibles valores que pueden almacenarse. La longitud máxima es de 65,535. Si se intenta introducir un valor que no esté incluido en la lista, se insertará valor vacío.
SET
Permite definir una lista de posibles valores que pueden almacenarse. La longitud máxima es de 64. Los valores posibles se pueden combinar.
4. Espacial
MySQL soporta los siguientes tipos datos espaciales basados en la especificación OpenGIS:
GEOMETRY
Permite almacenar valores de cualquier tipo espacial.
POINT
Permite almacenar un punto.
LINESTRING
Permite almacenar una cadena de puntos.
POLYGON
Permite almacenar un polígono.
MULTIPOINT
Permite almacenar una colección de puntos.
MULTILINESTRING
Permite almacenar una colección de objetos LineString.
MULTIPOLYGON
Permite almacenar una colección de polígonos.
GEOMETRYCOLLECTION
Permite almacenar objetos geométricos de cualquier tipo.
5. JSON
Permite almacenar un dato con formato JSON (JavaScript Object Notation).}
Estos son los tipos de datos en MySQL que debes conocer. Revisa esta lista cada vez que lo necesites para tus proyectos con este sistema de bases de datos.