¿Qué es MySQL?
MySQL es un sistema de gestión de bases de datos relacional (RDBMS, por sus siglas en inglés) de código abierto. Fue creado en 1995 por la empresa sueca MySQL AB, fundada por Michael Widenius, David Axmark y Allan Larsson. En 2008, Sun Microsystems adquirió MySQL AB, y en 2010 Oracle Corporation compró Sun Microsystems, convirtiéndose en la actual propietaria de MySQL.
A pesar de los cambios de propiedad, MySQL sigue siendo software libre bajo la licencia GPL (General Public License), lo que significa que cualquier persona puede descargarlo, usarlo y modificarlo sin coste alguno. Oracle también ofrece una versión comercial con funcionalidades adicionales y soporte técnico.
¿Qué es una base de datos relacional?
Antes de profundizar en MySQL, conviene entender qué es una base de datos relacional. Imagina una hoja de cálculo con filas y columnas: cada fila representa un registro (por ejemplo, un cliente) y cada columna representa un atributo de ese registro (nombre, email, fecha de registro). Una tabla en una base de datos funciona exactamente así.
Una base de datos relacional almacena la información en múltiples tablas que se relacionan entre sí mediante claves. Por ejemplo, una tabla clientes puede estar relacionada con una tabla pedidos a través de un campo cliente_id. Esta relación permite consultar datos de varias tablas simultáneamente sin duplicar información.
-- Ejemplo: consultar los pedidos de un cliente específico
SELECT
c.nombre,
c.email,
p.numero_pedido,
p.total,
p.fecha
FROM clientes c
INNER JOIN pedidos p ON c.id = p.cliente_id
WHERE c.id = 42;Este tipo de consulta, que combina datos de dos tablas diferentes, es el corazón del modelo relacional y lo que hace tan poderoso a MySQL.
¿Cómo funciona MySQL?
MySQL utiliza una arquitectura cliente-servidor. Esto significa que existe un programa servidor (el servicio mysqld) que se ejecuta de forma continua en una máquina, esperando conexiones. Los programas cliente se conectan al servidor para enviar instrucciones y recibir resultados.
El flujo básico es el siguiente:
El cliente envía una consulta SQL al servidor. El servidor analiza la consulta, verifica los permisos del usuario, optimiza el plan de ejecución, accede a los datos almacenados en disco y devuelve los resultados al cliente. Todo esto sucede en milisegundos para la mayoría de las consultas.
Los clientes pueden ser muy diversos: el programa de línea de comandos mysql, una aplicación web escrita en PHP o Node.js, un script en Python, una herramienta gráfica como MySQL Workbench, o cualquier programa que implemente el protocolo de comunicación de MySQL.
El lenguaje SQL
Para comunicarse con MySQL se utiliza SQL (Structured Query Language), un lenguaje estándar para gestionar bases de datos relacionales. SQL no es exclusivo de MySQL: PostgreSQL, SQL Server, Oracle Database y SQLite también lo utilizan, aunque cada sistema añade sus propias extensiones.
SQL se divide en varios subconjuntos según el tipo de operación:
DDL (Data Definition Language) permite crear y modificar la estructura de la base de datos. Con DDL defines tablas, índices y restricciones.
CREATE TABLE productos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(200) NOT NULL,
precio DECIMAL(10, 2) NOT NULL,
stock INT DEFAULT 0,
creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);DML (Data Manipulation Language) permite trabajar con los datos almacenados: insertar registros, consultarlos, actualizarlos o eliminarlos.
-- Insertar un producto
INSERT INTO productos (nombre, precio, stock)
VALUES ('Teclado mecánico', 89.99, 150);
-- Consultar productos con stock bajo
SELECT nombre, precio, stock
FROM productos
WHERE stock < 10
ORDER BY stock ASC;DCL (Data Control Language) gestiona los permisos de acceso, determinando qué usuarios pueden realizar qué operaciones sobre qué datos.
¿Por qué elegir MySQL?
MySQL impulsa algunas de las aplicaciones más grandes del mundo. Facebook, Twitter, YouTube, Netflix, Airbnb y Uber utilizan MySQL como parte fundamental de su infraestructura. Esta adopción masiva no es casualidad.
Rendimiento probado. MySQL está optimizado para lecturas rápidas, lo que lo hace ideal para aplicaciones web donde la mayoría de las operaciones son consultas SELECT. Con la configuración adecuada, MySQL puede manejar miles de consultas por segundo en hardware modesto.
Fiabilidad. El motor de almacenamiento InnoDB, que es el motor predeterminado desde MySQL 5.5, ofrece soporte completo para transacciones ACID. Esto garantiza que los datos se mantienen consistentes incluso ante fallos del sistema, cortes de energía o errores de software.
Ecosistema maduro. Después de casi tres décadas de desarrollo, MySQL cuenta con documentación exhaustiva, una comunidad enorme y compatibilidad con prácticamente cualquier lenguaje de programación. Existen conectores oficiales para Java, Python, PHP, Node.js, C, C++, Perl y muchos más.
Escalabilidad. MySQL soporta replicación maestro-esclavo, replicación de grupo, particionamiento de tablas y, mediante herramientas como MySQL Router y MySQL InnoDB Cluster, alta disponibilidad con failover automático. Empresas como GitHub gestionan petabytes de datos con MySQL.
Coste. La edición Community es completamente gratuita y suficiente para la inmensa mayoría de proyectos. No hay costes de licencia, lo que reduce significativamente el coste total de una aplicación.
MySQL vs otros sistemas de bases de datos
Es natural preguntarse cómo se compara MySQL con alternativas como PostgreSQL, SQL Server o MongoDB.
MySQL vs PostgreSQL. PostgreSQL es otro RDBMS de código abierto con una reputación de mayor cumplimiento del estándar SQL y funcionalidades más avanzadas como tipos de datos personalizados, herencia de tablas y mejor soporte para consultas geoespaciales. MySQL, por su parte, históricamente ha sido más rápido en lecturas simples y tiene una curva de aprendizaje más suave. En la práctica, ambos son excelentes opciones y la elección suele depender del ecosistema del proyecto.
MySQL vs MongoDB. MongoDB es una base de datos NoSQL orientada a documentos. Almacena datos en formato JSON flexible, sin esquema fijo. Es adecuada para datos no estructurados o que cambian frecuentemente de forma. MySQL es mejor cuando los datos tienen relaciones claras y se necesita integridad referencial. Muchos proyectos combinan ambos sistemas.
MySQL vs SQL Server. SQL Server es el RDBMS de Microsoft, popular en entornos corporativos con tecnología .NET. Ofrece herramientas de business intelligence muy potentes pero requiere licencias costosas para sus versiones completas. MySQL es la opción preferida en entornos Linux y aplicaciones web.
Versiones de MySQL
A la fecha, las versiones más relevantes de MySQL son:
MySQL 8.0 fue la versión principal durante muchos años e introdujo cambios significativos: funciones de ventana, expresiones de tabla comunes (CTEs), índices invisibles, roles de usuario y mejoras importantes de rendimiento. Si encuentras servidores en producción, probablemente ejecuten esta versión.
MySQL 8.4 LTS es la versión de soporte a largo plazo (Long Term Support) más reciente. Oracle cambió su esquema de versionamiento: en lugar de incrementar el número menor (8.0, 8.1...), ahora publican versiones Innovation (con funcionalidades experimentales) y versiones LTS (estables y con soporte extendido).
MySQL 9.x (Innovation) incluye las funcionalidades más recientes y experimentales. Es adecuada para desarrollo y pruebas, pero no se recomienda para producción a menos que necesites una funcionalidad específica de esa versión.
Para este tutorial, todo el contenido es aplicable a MySQL 8.0 y versiones posteriores, que es lo que encontrarás en la gran mayoría de entornos.
¿Qué aprenderás en este tutorial?
Este tutorial cubre MySQL de forma integral. Comenzarás con la instalación y configuración del servidor, seguirás con las consultas básicas SELECT, WHERE y ORDER BY, y avanzarás progresivamente hacia temas como joins, subconsultas, funciones de agregación y manipulación de datos.
Una vez domines los fundamentos, entrarás en la definición de tablas, restricciones, tipos de datos e índices. Después explorarás funcionalidades avanzadas como procedimientos almacenados, triggers, transacciones y funciones de ventana.
El tutorial también cubre el extenso conjunto de funciones de MySQL para trabajar con cadenas, fechas, números y datos JSON, así como la administración del servidor, gestión de usuarios, backups y la integración con lenguajes de programación como Node.js, Python, PHP y Java.
En el siguiente artículo aprenderás a instalar MySQL en tu sistema operativo.
Escrito por Eduardo Lázaro
