Iniciar sesión
Iniciar sesión

Tipos de datos en MySQL: visión general, ejemplos de uso y mejores prácticas

Tipos de datos en MySQL: visión general, ejemplos de uso y mejores prácticas
Hostman Team
Technical writer
Servicio MySQL
16.01.2026
Reading time: 7 min

Al configurar una base de datos en MySQL, el usuario debe asignar un nombre y un tipo de dato a cada columna de una tabla. Este proceso ayuda al sistema a comprender exactamente qué tipo de información se almacenará y cómo se procesará, además de determinar la cantidad de memoria necesaria.

Existen varias clases principales de tipos de datos en las tablas de MySQL, entre ellas numéricos, de caracteres, de fecha y hora, y otros. Cada clase contiene varios tipos de datos específicos. Es importante definirlos correctamente en la etapa inicial de creación de la tabla para evitar problemas cuando la estructura completa de la base de datos esté finalizada.

Este artículo describe los principales tipos de datos de MySQL, su estructura, valores válidos y el uso recomendado.

Tipos numéricos

MySQL admite todos los tipos de datos numéricos estándar de SQL, utilizados para almacenar números. En este artículo se cubren:

  • Enteros

  • Números de punto flotante

  • Números de punto fijo

Cada uno se describe con más detalle a continuación.

Enteros

Se utilizan para almacenar números enteros con signo o sin signo. Los tipos con signo pueden almacenar valores positivos y negativos, mientras que los tipos sin signo almacenan solo valores positivos, lo que duplica efectivamente el rango.

Existen cinco tipos principales de enteros: TINYINT, SMALLINT, MEDIUMINT, INT y BIGINT. La principal diferencia es el rango de valores que pueden almacenar: cuanto mayor es el rango, más memoria se requiere. Es importante seleccionar el tipo adecuado para asignar la memoria de forma eficiente al crear tablas.

Tipo

Memoria (bytes)

Rango con signo

Rango sin signo

TINYINT

1

−2⁷ a 2⁷−1

0 a 2⁸−1

SMALLINT

2

−2¹⁵ a 2¹⁵−1

0 a 2¹⁶−1

MEDIUMINT

3

−2²³ a 2²³−1

0 a 2²⁴−1

INT

4

−2³¹ a 2³¹−1

0 a 2³²−1

BIGINT

8

−2⁶³ a 2⁶³−1

0 a 2⁶⁴−1

Especificar un tamaño (por ejemplo, MEDIUMINT(6)) no afecta al rango. Es solo cosmético y algunas herramientas lo utilizan para rellenar números cortos con espacios.
También se puede usar el atributo ZEROFILL para rellenar con ceros en lugar de espacios. Por ejemplo, SMALLINT(8) ZEROFILL mostrará 256 como 00000256.

Números de punto flotante

Se utilizan para almacenar valores numéricos aproximados. MySQL permite definir la precisión de la siguiente forma:

FLOAT(p)

Donde p es la precisión, de 0 a 53.

  • Si p < 25, se usa FLOAT (precisión simple).

  • En caso contrario, se usa DOUBLE (precisión doble).

Tipo

Memoria (bytes)

Rango de valores

FLOAT

4

~±3,4028 × 10³⁸

DOUBLE

8

~±1,7976 × 10³⁸

Números de punto fijo

Se utilizan para almacenar valores exactos con una precisión definida. Se emplean los tipos DECIMAL o NUMERIC, normalmente en cálculos financieros donde el redondeo no es aceptable.

Definición:

DECIMAL(M, D)

  • M: número total de dígitos (hasta 65; valor predeterminado 10).

  • D: número de dígitos después del punto decimal (0–30; predeterminado 0).

Ejemplo:

DECIMAL(6, 3)

Almacena valores de -999.999 a 999.999.
DECIMAL y NUMERIC son funcionalmente equivalentes.

Tipos de caracteres

Diseñados para almacenar textos cortos, los tipos de datos de caracteres en MySQL incluyen CHAR y VARCHAR. Son similares, pero difieren en la forma en que los datos se almacenan y recuperan.

CHAR almacena una cadena de longitud fija (de 0 a 2⁸−1 caracteres), definida en el momento de crear la tabla. Si se inserta una cadena más corta que la longitud definida, los caracteres restantes se rellenan con espacios.

VARCHAR almacena una cadena de longitud variable (de 0 a 2¹⁶−1 caracteres). A diferencia de CHAR, solo almacena el número real de caracteres y utiliza 1 byte adicional para guardar la longitud de la cadena.

Si la cadena de entrada supera la longitud definida para CHAR o VARCHAR, se trunca para ajustarse al límite permitido.

Si se combinan columnas CHAR y VARCHAR en una tabla, MySQL convertirá automáticamente CHAR a VARCHAR.

Ejemplo comparativo de CHAR(5) y VARCHAR(5)

Cadena

CHAR(5)

VARCHAR(5)

'A'

'A '

'A'

'Hello'

'Hello'

'Hello'

'Example'

'Examp'

'Examp'

Tipos TEXT y binarios

El tipo TEXT se utiliza para almacenar grandes volúmenes de texto, mientras que BLOB está diseñado para datos binarios como imágenes, código compilado o audio.

Diferencias principales:

  • BLOB: las comparaciones y ordenaciones distinguen entre mayúsculas y minúsculas.

  • TEXT: las comparaciones y ordenaciones no distinguen entre mayúsculas y minúsculas.

MySQL no puede indexar la longitud completa de campos TEXT o BLOB, ni admite ordenación mediante índices de campo completo.
Si la longitud de la cadena supera el máximo permitido, la entrada se truncará.

Tipos TEXT

Tipo

Memoria (bytes)

Máx. caracteres

TINYTEXT

2⁸−1

hasta 2⁸−1

TEXT

2¹⁶−1

hasta 2¹⁶−1

MEDIUMTEXT

2²⁴−1

hasta 2²⁴−1

LONGTEXT

2³²−1

hasta 2³²−1

Tipos BLOB

Tipo

Memoria (bytes)

Máx. bytes

TINYBLOB

2⁸−1

hasta 2⁸−1

BLOB

2¹⁶−1

hasta 2¹⁶−1

MEDIUMBLOB

2²⁴−1

hasta 2²⁴−1

LONGBLOB

2³²−1

hasta 2³²−1

Fecha y hora

MySQL proporciona varios tipos de datos para almacenar información de fecha y hora:

Tipo

Memoria (bytes)

Descripción

DATE

3

Almacena solo la fecha en formato YYYY-MM-DD.

DATETIME

8

Almacena fecha y hora en formato YYYY-MM-DD HH:MM:SS.

TIMESTAMP

4

Similar a DATETIME, pero con menor rango (1970–2038).

TIME

3

Almacena solo la hora, de −838:59:59 a 838:59:59.

YEAR

1

Almacena solo el año en formato YYYY.

JSON

MySQL admite un tipo de dato JSON nativo desde la versión 5.7.8, que ofrece las siguientes ventajas:

  • Validación automática de datos JSON.

  • Formato de almacenamiento binario optimizado para un acceso y consultas más rápidas.

El uso de memoria es aproximadamente equivalente a LONGTEXT.

Tipos compuestos

MySQL ofrece tipos de datos de cadena especiales que almacenan valores de un conjunto fijo predefinido: ENUM y SET.

  • ENUM almacena un solo valor de la lista y utiliza hasta 2 bytes de memoria.

  • SET puede almacenar hasta 26 valores simultáneamente y utiliza hasta 8 bytes de memoria.

Ejemplo

ENUM('a', 's', 'd')

La columna solo puede contener uno de los siguientes valores: 'a', 's' o 'd'.

SET('a', 's', 'd')

La columna puede contener cualquier combinación, incluyendo:
'a', 's', 'd', 'a,s', 'a,d', 's,d', 'a,s,d' o el conjunto vacío ('').

Si se inserta un valor como ('a', 's', 'a') en un SET, MySQL elimina automáticamente los duplicados y los ordena según el orden original de declaración. El valor almacenado será 'a,s'.

Conclusión

Este artículo cubrió los tipos de datos de MySQL más utilizados para definir columnas de tablas. Con este conocimiento, los usuarios pueden seleccionar los tipos adecuados y diseñar de forma eficiente la estructura de sus bases de datos. Para tipos menos comunes y más detallados, se recomienda consultar la documentación oficial de MySQL.

Puedes utilizar bases de datos en la nube de Hostman para practicar con MySQL y sus distintos tipos de datos. Las principales ventajas de usar MySQL en la nube incluyen:

  • Mantenimiento y configuración de la base de datos por parte del proveedor.

  • Alta fiabilidad, disponibilidad y tolerancia a fallos.

  • Copias de seguridad automáticas.

  • Escalado horizontal y vertical rápido.

  • Funcionamiento continuo mediante replicación en clúster.

  • Ejecución de bases de datos sobre recursos de una plataforma en la nube.

Servicio MySQL
16.01.2026
Reading time: 7 min

Similares

Sistema Debian

Cómo instalar MySQL en Debian

Instalar MySQL en Debian permite establecer una infraestructura de base de datos robusta y flexible que da soporte a una amplia variedad de aplicaciones y servicios. MySQL es conocido por su escalabilidad, fiabilidad y estabilidad. Configurarlo adecuadamente mejora la eficiencia operativa y el rendimiento general del sistema de bases de datos. Esta combinación es especialmente útil para administradores, analistas de bases de datos y empresas que manejan grandes volúmenes de información. Además, la documentación extensa y la comunidad de MySQL facilitan la resolución de problemas y la optimización de operaciones. En esta guía, mostraremos paso a paso cómo instalar y configurar MySQL en Debian. Cómo instalar MySQL en Debian Los repositorios predeterminados no contienen el paquete del servidor de base de datos MySQL en Debian. Para instalarlo en un sistema Linux, siga las instrucciones que se indican a continuación. Descargaremos la versión más reciente de MySQL. Paso 1: Descargar el paquete de MySQL Primero, descargue el paquete de configuración del repositorio de MySQL en formato .deb: wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb Nota: Visite la página del repositorio oficial de MySQL para verificar la versión más reciente disponible. Paso 2: Instalar el paquete de configuración de MySQL Ahora use el archivo .deb descargado para iniciar la instalación con dpkg: sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb Cuando se le solicite, seleccione "MySQL Server & Cluster" y presione Enter para continuar. Luego, seleccione la versión que desea instalar, como por ejemplo mysql-8.4-lts, desplácese hacia abajo y confirme con OK para continuar. Paso 3: Actualizar el sistema Después de configurar el repositorio, actualice el índice de paquetes del sistema para cargar la nueva información: sudo apt update Paso 4: Instalar MySQL Instale el servidor de MySQL con el siguiente comando: sudo apt install mysql-server -y Durante la instalación, aparecerá una interfaz para establecer la contraseña del usuario root. Elija una contraseña segura y confírmela. Al finalizar, presione OK. Compruebe que MySQL se haya instalado correctamente ejecutando: mysql --version Paso 5: Administrar el servicio Active el servicio de MySQL para que se inicie automáticamente con el sistema: sudo systemctl enable mysql Inicie el servicio inmediatamente con: sudo systemctl start mysql Verifique que el servicio esté funcionando correctamente: sudo systemctl status mysql Consejo: Antes de abrir el puerto 3306 a clientes externos, consulte nuestra guía Crear un túnel SSH para MySQL, donde aprenderá a tunelizar sus conexiones mediante SSH sin exponer directamente MySQL a internet. Paso 6: Asegurar la instalación de MySQL La contraseña creada durante la instalación inicial ya protege al usuario root de la base de datos. Sin embargo, MySQL viene con algunas configuraciones inseguras por defecto, como acceso remoto o usuarios anónimos. Para endurecer la configuración, ejecute el siguiente script de seguridad: sudo mysql_secure_installation Cuando se le pregunte si desea activar el componente VALIDATE PASSWORD, escriba Y y presione Enter para habilitar la política de contraseñas seguras. Luego deberá configurar varias opciones de seguridad: Establecer contraseña para root: Ingrese una contraseña fuerte y asegúrese de que sea correcta. Para aplicar una política de contraseñas más estricta, puede ingresar 2. Cuando se le pregunte si desea cambiar la contraseña root, escriba N; de lo contrario, escriba Y para modificarla.   Eliminar usuarios anónimos: Se recomienda eliminarlos. Escriba Y y presione Enter.   Deshabilitar acceso remoto al usuario root: Para mayor seguridad, evite el acceso remoto del usuario root. Escriba Y.   Eliminar la base de datos de prueba: Se puede eliminar la base de datos de prueba para evitar accesos no autorizados. Escriba Y. Recargar las tablas de privilegios: Presione Enter para aplicar los cambios de inmediato. Paso 7: Acceder a MySQL Puede usar la utilidad cliente mysql para conectarse y acceder a la consola del servidor de base de datos. Acceda a la línea de comandos y conéctese como el usuario root utilizando la contraseña establecida durante el proceso de aseguramiento: sudo mysql -u root -p Paso 8: Operaciones básicas en MySQL Es una buena práctica crear una base de datos y un usuario independiente para su aplicación en lugar de utilizar el usuario root. Siga estos pasos: Crear una base de datos: CREATE DATABASE hostmandb; Ver todas las bases de datos: SHOW DATABASES; Crear un nuevo usuario: CREATE USER 'minhal'@'localhost' IDENTIFIED BY 'Qwer@1234'; Conceder privilegios al usuario: GRANT ALL PRIVILEGES ON hostmandb.* TO 'minhal'@'localhost'; Actualizar privilegios: FLUSH PRIVILEGES; Salir de la consola: EXIT; Acceder como usuario específico: sudo mysql -u minhal -p Después de introducir la contraseña del usuario, tendrá acceso a la consola. Verifique que la base de datos esté disponible: SHOW DATABASES; Paso 9: Configurar acceso remoto Si necesita acceder a MySQL desde otra máquina, configure el servidor para aceptar conexiones remotas: Editar el archivo de configuración de MySQL: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf Buscar la línea bind-address y cambiarla por: bind-address = 0.0.0.0 Reiniciar el servicio de MySQL: sudo systemctl restart mysql Conceder acceso remoto al usuario creado: sudo mysql -u root -p GRANT ALL PRIVILEGES ON hostmandb.* TO 'minhal'@'localhost';FLUSH PRIVILEGES;EXIT; Paso 10: Configurar el firewall Permitir tráfico para MySQL: sudo ufw allow mysql Activar el firewall si aún no está activado: sudo ufw enable Recargar la configuración del firewall: sudo ufw reload Paso 11: Realizar copias de seguridad y restauración Respaldar una base de datos específica: sudo mysqldump -u root -p hostmandb> hostmandb_backup.sql Respaldar todas las bases de datos: sudo mysqldump -u root -p --all-databases > all_databases_backup.sql Restaurar una base de datos desde el archivo de respaldo: sudo mysql -u root -p hostmandb < hostmandb_backup.sql Paso 12: Optimizar el rendimiento de MySQL (opcional) Dependiendo de la carga de trabajo y los recursos del servidor, puede ajustar configuraciones para garantizar el máximo rendimiento. Estas instrucciones le ayudarán a optimizar la velocidad de MySQL: Ajustar el tamaño del buffer pool de InnoDB: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf Agregue o edite la siguiente línea: innodb_buffer_pool_size = 1G Ajuste este valor en función de la memoria disponible en su servidor. Habilitar caché de consultas: sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf Agregue o edite las siguientes líneas: query_cache_type = 1query_cache_size = 64M Optimizar la estructura de una tabla: USE hostmandb;OPTIMIZE TABLE customers; Analizar el rendimiento: Puede analizar las operaciones de la base de datos con herramientas como MySQL Workbench y mysqltuner. Para instalar mysqltuner: sudo apt install mysqltuner Ejecute mysqltuner para recibir recomendaciones de optimización: sudo mysqltuner Conclusión Instalar un entorno MySQL es fundamental en el mundo digital actual. Siguiendo esta guía, podrá instalar y conectar su base de datos MySQL de forma segura. Esta estrategia no solo mejora la seguridad, sino que también facilita el mantenimiento remoto de la base de datos. Ayuda a prevenir brechas de seguridad y garantiza la confidencialidad de sus datos. Este artículo ha proporcionado instrucciones detalladas para la instalación del entorno de base de datos MySQL en Debian. Se recomienda monitorear y optimizar regularmente los servidores MySQL para asegurar el mejor rendimiento y fiabilidad. Además, Hostman ofrece bases de datos en la nube preconfiguradas y listas para usar, incluyendo MySQL en la nube.
16 July 2025 · 7 min to read

¿Necesita ayuda para
elegir un producto?

Nuestros expertos están disponibles para ayudarle a encontrar la solución cloud
adecuada para su empresa, incluso si no sabe por dónde empezar.
Hostman's Support