Ir al contenido principal

Las 34 mejores preguntas y respuestas de entrevista sobre MySQL para 2026

Domina MySQL con esta guía de preguntas de entrevista, con ejemplos reales y consejos expertos para brillar en tu próxima entrevista sobre bases de datos.
Actualizado 2 jun 2026  · 15 min leer

¿Te has fijado en que MySQL aparece como requisito en casi todas las ofertas relacionadas con bases de datos? Tiene su lógica: MySQL impulsa desde tus redes sociales favoritas hasta muchas de las apps que usas a diario.

He preparado esta guía para ayudarte a afrontar preguntas de entrevista sobre MySQL. Veremos desde lo básico que debería dominar cualquier perfil junior hasta aspectos más complejos para roles senior. Además, compartiré algunos trucos para que te presentes como una persona segura en tus próximas entrevistas relacionadas con datos. 

¿Qué es MySQL?

MySQL es un SGBDR (sistema de gestión de bases de datos relacionales) de código abierto basado en SQL que organiza los datos en tablas estructuradas. Fue desarrollado por Oracle Corporation.

Fue el SGBD de código abierto más popular en 2024. Sin embargo, la encuesta de desarrolladores de Stack Overflow en 2025 mostró que PostgreSQL pasó a ser la base de datos más utilizada entre desarrolladores profesionales, superando por primera vez a MySQL.

Que no te lleve a engaño: MySQL sigue siendo enormemente popular — con un 40,5% de uso entre desarrolladores en 2025 — y continúa alimentando infinidad de aplicaciones web, gestores de contenidos y herramientas empresariales. Y, especialmente si trabajas con aplicaciones web o con el stack LAMP, MySQL es una competencia de primer nivel.

Gráfico que muestra los sistemas de bases de datos más populares en 2024: MySQL es el más popular, seguido de PostgreSQL.

En 2024, MySQL fue el SGBD de código abierto más popular del mundo, con una puntuación de 1061. Fuente: Statista.

Preguntas básicas sobre MySQL

En la fase inicial de la entrevista, es habitual que te pregunten conceptos fundamentales para evaluar tu entendimiento de las bases de datos y de MySQL.

1. ¿Qué es una base de datos y en qué se diferencia de un SGBD?

Una base de datos es un contenedor donde almacenamos datos a los que podemos acceder, modificar y analizar. Por ejemplo, las redes sociales guardan en bases de datos quién ha dado like a nuestras publicaciones.

Un SGBD (sistema de gestión de bases de datos) es el software que nos permite interactuar con esos datos y administrarlos, por ejemplo, creando usuarios y gestionando sus permisos. MySQL es uno de los SGBD más populares. Otros ejemplos incluyen PostgreSQL, MongoDB y Microsoft SQL Server.

2. ¿En qué se diferencia MySQL de otros sistemas de gestión de bases de datos relacionales?

MySQL es un SGBDR de código abierto que usa SQL para gestionar datos. Es conocido por su facilidad de uso, rapidez y compatibilidad con aplicaciones web.

Así se diferencia de otros SGBDR:

  • Simplicidad y rendimiento: MySQL se valora por su sencillez y rendimiento optimizado, lo que lo convierte en la opción habitual para desarrolladores web y startups.
  • Funciones avanzadas: Aunque MySQL destaca por su facilidad de uso, puede carecer de funciones avanzadas presentes en otros SGBDR como PostgreSQL, por ejemplo, un soporte más completo de transacciones ACID, indexación avanzada y un conjunto más amplio de tipos de datos.
  • Motores de almacenamiento: MySQL permite elegir diferentes motores de almacenamiento (p. ej., InnoDB, MyISAM) por tabla, aportando flexibilidad según el caso de uso.

MySQL es ideal cuando necesitas velocidad y escalabilidad; para requisitos más complejos o de nivel corporativo, PostgreSQL puede ser mejor elección.

3. ¿Cuáles son los principales tipos de datos disponibles en MySQL?

MySQL admite varios tipos de datos, agrupados en:

  • Numéricos: INT, DECIMAL, FLOAT, DOUBLE, etc.

  • Cadena: CHAR, VARCHAR, TEXT, BLOB.

  • Fecha/hora: DATE, DATETIME, TIMESTAMP, TIME.

  • JSON: para almacenar objetos JSON.

4. ¿Cuál es la diferencia entre los tipos de datos INT y DECIMAL?

INT almacena números enteros, sin decimales. Úsalo cuando no necesitas fracciones. En cambio, DECIMAL puede almacenar valores financieros y es adecuado para cálculos con decimales de forma precisa.

5. ¿En qué se diferencian DATE y DATETIME en MySQL?

La columna DATE en MySQL almacena la fecha en formato de año, mes y día: 

YYYY-MM-DD

Por su parte, DATETIME guarda fecha y hora con este formato: 

YYYY-MM-DD HH:MM:SS 

6. ¿Qué es una clave foránea y cómo la usarías en una base de datos?

Una clave foránea es un campo de una tabla que enlaza con la clave primaria de otra.

Por ejemplo, en una tabla customers que almacena información de clientes, cada cliente tiene un customer_id único; en otra tabla llamada transactions (que guarda compras), usamos customer_id como clave foránea. El customer_id en transactions vincula cada compra con un cliente concreto en la tabla customers .

Así se vería en SQL:

CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);
CREATE TABLE transactions (
    transaction_id INT PRIMARY KEY,
    customer_id INT,
    amount DECIMAL(10,2),
    date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

7. ¿Cuáles son las diferencias entre INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN?

Los joins combinan filas de dos o más tablas en base a columnas relacionadas. Diferencias:

  • INNER JOIN: devuelve filas con coincidencia en ambas tablas.

  • LEFT JOIN: devuelve todas las filas de la tabla izquierda y las coincidentes de la derecha. Si no hay coincidencia, las columnas de la derecha van como NULL.

  • RIGHT JOIN: similar a LEFT JOIN, devuelve todas las filas de la derecha y las coincidentes de la izquierda.

  • FULL JOIN: combina los resultados de LEFT JOIN y RIGHT JOIN, incluyendo filas sin coincidencia de ambas tablas. Nota: MySQL no admite de forma nativa la sintaxis FULL JOIN. Para lograr el mismo resultado, usa un UNION de un LEFT JOIN y un RIGHT JOIN

8. ¿Cuál es la diferencia entre DELETE, TRUNCATE y DROP en MySQL?

Comandos como DELETE, TRUNCATE y DROP pueden sonar parecidos, pero se comportan de forma distinta:

DELETE: elimina filas de una tabla según una condición. Se puede deshacer si está dentro de una transacción. Ejemplo:

DELETE FROM employees WHERE department_id = 5;

TRUNCATE: borra todas las filas de una tabla, pero mantiene su estructura. Es más rápido que DELETE y no se puede deshacer. Ejemplo:

TRUNCATE TABLE employees;

DROP: elimina por completo la tabla y sus datos, junto con dependencias como índices. Ejemplo:

DROP TABLE employees;

9. ¿Cómo creas y modificas una tabla en MySQL? Pon ejemplos.

Para crear tablas, usa CREATE TABLE y, para modificarlas, normalmente ALTER TABLE. Ejemplos:

Crear tabla:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), department VARCHAR(50));

Añadir una columna:

ALTER TABLE employees ADD COLUMN salary DECIMAL(10, 2);

10. ¿Qué es una tabla temporal en SQL?

Una tabla temporal solo existe durante la sesión actual. Al cerrar la sesión, se elimina. Sirve para guardar resultados intermedios temporalmente. Puedes usarla para pruebas, filtrado o preparar datos antes de insertarlos en una tabla permanente.

Ejemplo:

CREATE TEMPORARY TABLE temp_employees (
    id INT,
    name VARCHAR(50)
);
INSERT INTO temp_employees VALUES (1, 'John Doe');
SELECT * FROM temp_employees;

11. ¿Qué es una subconsulta en MySQL? Explícalo con un ejemplo.

Una subconsulta (o consulta anidada) va dentro de otra consulta. Permite descomponer operaciones complejas en pasos manejables. Por ejemplo, para encontrar empleados que cobran por encima de la media:

SELECT first_name, last_name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Desglose:

  1. La consulta interna SELECT AVG(salary) FROM employees calcula primero el salario medio.

  2. La externa usa esa media para encontrar quienes cobran por encima.

12. ¿Cómo usarías un INSERT en MySQL para añadir datos a una tabla? ¿Alguna buena práctica?

Usamos INSERT para añadir datos. Sintaxis básica:

INSERT INTO table_name (column1, column2, ...) 
VALUES (value1, value2, ...); 

Buenas prácticas:

  1. Indica explícitamente las columnas: el código es más claro y evita errores si cambia el esquema.

  2. En columnas AUTO_INCREMENT como IDs, omítelas en el INSERT: MySQL las gestiona y evitas duplicados.

  3. Sé consistente con las comillas de cadenas. Yo prefiero comillas simples, pero ambas opciones valen.

  4. Para varias filas, insértalas en una sola sentencia por rendimiento.

13. ¿Qué importancia tiene el atributo AUTO_INCREMENT en MySQL?

AUTO_INCREMENT genera números únicos y secuenciales para una columna, normalmente la clave primaria.

Ejemplo de tabla con AUTO_INCREMENT:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50)
);

E inserción de filas:

INSERT INTO employees (name, department) VALUES ('John Doe', 'Sales');
INSERT INTO employees (name, department) VALUES ('Jane Smith', 'Marketing');

14. ¿Qué es una vista en MySQL?

Una vista es una consulta guardada que funciona como una tabla virtual. Te permite dar nombre a una consulta compleja y reutilizarla como si fuera una tabla. Así evitas reescribirla cada vez.

Por ejemplo, para simplificar el acceso a datos de empleados con su departamento, puedes crear una vista:

CREATE VIEW employee_details AS
SELECT 
    e.id,
    e.name,
    d.department_name,
    e.salary
FROM 
    employees e
JOIN 
    departments d ON e.department_id = d.department_id;

Ahora puedes consultar employee_details como si fuera una tabla:

SELECT * FROM employee_details;

Eso sí, en general las vistas son de solo lectura y no se usan para insertar o actualizar. Además, pueden ralentizar si cada acceso ejecuta la consulta subyacente.

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis

Preguntas intermedias sobre MySQL

En esta sección veremos temas de nivel intermedio. Estas preguntas suelen evaluar tu conocimiento de tipos de datos y estructura en MySQL.

15. ¿Qué son las tablas con control de versiones del sistema y cómo funcionan?

Las tablas versionadas por el sistema mantienen el historial completo de cambios de una tabla. Como conservan versiones previas de cada fila, se pueden usar para auditoría y recuperación de datos.

Funcionan añadiendo dos columnas extra — StartTime y EndTime — que registran el periodo de validez de cada fila. Cuando insertas, actualizas o borras, estos sellos de tiempo se actualizan:

  • Insert: se añade una fila nueva con StartTime al momento actual y EndTime en 9999-12-31 23:59:59 — el valor máximo de DATETIME en MySQL, usado como centinela para indicar "fila activa".

  • Update: el EndTime de la fila original se actualiza al momento actual para marcarla como no válida y se crea una nueva fila con los datos actualizados y StartTime ahora y EndTime como "indefinido".

  • Delete: se actualiza el EndTime de la fila existente al momento actual, indicando que deja de ser válida.

Con la cláusula FOR SYSTEM_TIME de SQL puedes consultar el estado de la tabla en un instante concreto o en un rango temporal. Por ejemplo:

  • FOR SYSTEM_TIME AS OF '2024-01-01': recupera el estado de la tabla a 1 de enero de 2024.

  • FOR SYSTEM_TIME BETWEEN '2024-01-01' AND '2024-12-31': muestra todas las filas válidas en ese intervalo.

16. ¿Qué son las transacciones en MySQL y cómo se usan?

Una transacción es un conjunto de operaciones que se ejecutan como una unidad. Garantizan la integridad permitiendo que todas tengan éxito o que se deshagan juntas.

Ejemplo de uso:

START TRANSACTION;
UPDATE accounts SET balance = balance - 500 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 500 WHERE account_id = 2;
COMMIT; -- Guarda cambios de forma permanente
-- o
ROLLBACK; -- Revierte los cambios

17. ¿Qué es una restricción por defecto en MySQL? ¿Cómo se establece un valor por defecto en una columna?

Una restricción por defecto asigna un valor predeterminado a una columna cuando no se proporciona uno durante un INSERT. Así la columna queda válida aunque el usuario la omita.

Ejemplo de creación de tabla con valor por defecto:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    status VARCHAR(10) DEFAULT 'active'
);

Ahora puedes insertar sin indicar status:

INSERT INTO employees (name) VALUES ('John Doe');

Con esto reduces la probabilidad de NULL o datos inválidos en columnas críticas y simplificas consultas al no tener que gestionar casos por defecto explícitamente.

Campo

Tipo

Nulo

Clave

Por defecto

Extra

id

INT

NO

PRI

NULL

AUTO_INCREMENT

name

VARCHAR(50)

 

NULL

 

status

VARCHAR(10)

 

active

 

Este comando es útil porque:

  • Ayuda a comprender el esquema de la tabla antes de escribir consultas.
  • Sirve para depurar, especialmente en bases de datos poco familiares.
  • Identifica rápidamente restricciones, como claves primarias o valores por defecto.

18. ¿Cuál es la diferencia entre CHAR y VARCHAR en MySQL?

Ambos almacenan texto, pero gestionan el almacenamiento de forma distinta:

  • CHAR(n) guarda siempre exactamente n caracteres, rellenando con espacios si es más corto. Al ser de longitud fija, es algo más rápido cuando todos los valores comparten longitud, como códigos de país o flags de estado.

  • VARCHAR(n) guarda solo los caracteres reales hasta un máximo de n. Usa menos espacio para longitudes variables, con una ligera sobrecarga para registrar la longitud.

CREATE TABLE example (
    country_code CHAR(2),      -- Siempre 2 caracteres, p. ej., 'US', 'UK'
    email VARCHAR(255)         -- Longitud variable hasta 255
);

Regla práctica: usa CHAR para longitudes fijas y VARCHAR para el resto.

19. ¿Cómo usarías funciones de cadena en SQL para gestionar texto?

Varias funciones de cadena ayudan con nombres y otros textos. Por ejemplo:

  • LENGTH() muestra el número de caracteres de un nombre.

  • UPPER() y LOWER() convierten a mayúsculas o minúsculas.

  • CONCAT() une nombre y apellidos en una columna.

  • SUBSTRING() extrae partes del texto. Por ejemplo, separar el mes de la fecha de nacimiento.

Consulta de ejemplo:

SELECT 
    UPPER(first_name) AS upper_name,
    CONCAT(first_name, ' ', last_name) AS full_name,
    SUBSTRING(birthdate, 6, 2) AS birth_month,
    TRIM(last_name) AS trimmed_last_name,
    REPLACE(first_name, 'a', '@') AS replaced_name
FROM employees;

Esta consulta:

  • Convierte nombres a mayúsculas.

  • Combina nombre y apellidos en nombre completo.

  • Extrae el mes de una columna birthdate.

  • Elimina espacios en apellidos.

  • Reemplaza todas las "a" por "@" en nombres.

20. ¿Cómo actualizarías una fila específica en una base de datos con SQL?

Usa UPDATE con WHERE para identificar el registro a cambiar.

Por ejemplo, para actualizar el género de la película “Inception” (2010) a “Sci-Fi”:

UPDATE movies
SET genre = 'Sci-Fi'
WHERE movie_title = 'Inception' AND year = 2010;

Aquí UPDATE movies indica la tabla a actualizar y WHERE delimita la fila cuyo título es “Inception” y año “2010”.

Preguntas avanzadas sobre MySQL

Las preguntas avanzadas evalúan cómo resuelves escenarios complejos en MySQL y tu criterio al decidir.

21. ¿Qué es un trigger en MySQL? ¿Cómo se implementa?

Un trigger es un conjunto de acciones que se ejecutan cuando ocurre un evento en la base de datos. Pueden configurarse para ejecutarse antes o después de INSERT, UPDATE o DELETE.

Por ejemplo, si hay una tabla orders donde se añaden pedidos, podemos crear un trigger que registre cada alta en order_history:

CREATE TRIGGER after_order_insert
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
    INSERT INTO order_history (order_id, action, timestamp)
    VALUES (NEW.order_id, 'inserted', NOW());
END;

Tras ejecutarse el trigger, la tabla order_history se actualiza automáticamente:

history_id

order_id

action

timestamp

1

1

inserted

2024-12-24 10:00:00

2

2

inserted

2024-12-24 11:00:00

22. ¿Por qué añadir un índice acelera las consultas SQL?

Sin índice, la base de datos debe escanear fila a fila para encontrar una entrada. Un índice actúa como un índice de libro, permitiendo acceder directamente a las filas relevantes. Así se reduce el tiempo de búsqueda y las consultas van más rápidas.

Suelen implementarse con estructuras como B-trees o tablas hash, que facilitan búsquedas y recorridos por rango de forma eficiente.

Ejemplo de creación de índice:

-- Sin índice:
SELECT * FROM employees WHERE last_name = 'Smith';
-- Añadiendo un índice en la columna last_name:
CREATE INDEX idx_last_name ON employees(last_name);
-- Con el índice, la base de datos localiza rápidamente las filas con 'Smith' en last_name.

Inconvenientes de los índices:

  • Escrituras más lentas: INSERT, UPDATE y DELETE se ralentizan porque hay que actualizar el índice cada vez.

  • Coste de almacenamiento: ocupan espacio adicional.

23. ¿Qué tipo de dato usar para el peso y el precio de un producto en una tabla SQL y por qué?

Para el peso, DECIMAL suele ser la opción más segura. Aunque FLOAT y REAL almacenan decimales, usan aritmética en coma flotante y pueden introducir pequeños redondeos.

Para pesos donde la precisión importa (envíos, inventario), DECIMAL(8, 3) ofrece control con 3 decimales sin sorpresas. FLOAT solo es aceptable si toleras un pequeño margen de error.

24. ¿Cómo encuentras filas duplicadas en SQL con una función de ventana?

Puedes encontrarlas con ROW_NUMBER() así:

WITH DuplicateCheck AS (
    SELECT product_name, 
           category,
           ROW_NUMBER() OVER(
               PARTITION BY product_name, category 
               ORDER BY id
           ) AS row_num
    FROM sales
)
SELECT *
FROM DuplicateCheck
WHERE row_num > 1;

Cómo funciona:

1. ROW_NUMBER() asigna un número a cada fila del resultado.

2. PARTITION BY agrupa por product_name y category.

3. Dentro de cada grupo, numera desde 1.

4. Cualquier row_num mayor que 1 indica duplicado.

Por ejemplo, con estos registros:

  • Producto A, Categoría X, row_num = 1
  • Producto A, Categoría X, row_num = 2 (duplicado)
  • Producto B, Categoría Y, row_num = 1

La consulta mostrará la segunda fila al tener row_num > 1.

25. ¿Cómo crear y usar un procedimiento almacenado con parámetros en MySQL? Explícalo con un ejemplo.

Con procedimientos almacenados puedes guardar y reutilizar consultas complejas, haciendo las operaciones más eficientes y mantenibles. Veámoslo con parámetros en un ejemplo.

Supón que tienes una base de estudiantes y quieres filtrar por edad. Primero, creamos un procedimiento que recibe una edad:

CREATE PROCEDURE get_student_info(IN age INT)
BEGIN
    SELECT * FROM student WHERE student.age = age;
END;

Para usarlo, simplemente lo CALL con la edad deseada:

CALL get_student_info(21);

Podemos hacerlo más sofisticado con parámetros de salida. Por ejemplo, contar alumnos de una edad:

CREATE PROCEDURE count_students_by_age(IN age INT, OUT student_count INT)
BEGIN
    SELECT COUNT(*) INTO student_count FROM students WHERE students.age = age;
END;

Para obtener el resultado:

SET @count = 0;
CALL count_students_by_age(21, @count);
SELECT @count AS total_students;

26. ¿Por qué es importante la integridad referencial en una base de datos?

La integridad referencial mantiene correctas las relaciones entre tablas. Al crear una clave foránea, se asegura que los valores de una tabla existan en la tabla referenciada.

Ejemplo: gestionas un e-commerce con tablas Customers y Orders. Cada pedido debe pertenecer a un cliente real. Las claves foráneas imponen que:

  • No puedas crear un pedido para un cliente inexistente.
  • No puedas borrar un cliente con pedidos existentes (salvo que configures qué hacer con esos pedidos).
  • No puedas actualizar el ID de un cliente con pedidos asociados.

Al crear una restricción así:

ALTER TABLE Orders
ADD FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID);

La base de datos aplica automáticamente estas reglas:

  • Cada CustomerID en Orders debe existir en Customers.

  • Cualquier intento de violación (insertar un CustomerID inválido) será rechazado.

Esto previene inconsistencias graves, como pedidos que no se pueden vincular a clientes reales o informes con datos incompletos.

Preguntas de entrevista sobre MySQL para administradores de bases de datos

Si te presentas a un rol de administrador/a de bases de datos, aquí van algunas preguntas habituales.

27. ¿Por qué una aplicación grande usaría sharding de base de datos? ¿Qué retos conlleva?

El sharding divide grandes volúmenes de datos entre varios servidores. Cada shard contiene una parte del conjunto. Al repartir la carga, reduces la necesidad de hardware de alta gama. Aunque mejora velocidad y escalabilidad, también plantea retos:

  • Algunas consultas como joins pueden complicarse o no ser viables, dificultando la gestión.
  • Si los datos crecen, ciertos shards pueden saturarse y crear hotspots que degradan el rendimiento.

28. Explica el papel de los redo logs en la recuperación tras un fallo en MySQL.

Cada vez que MySQL modifica datos, hay que escribir en disco. Hacerlo directamente en los ficheros de datos es lento y arriesgado. Por eso, antes de modificar, MySQL escribe lo que va a hacer en el redo log. Es más seguro que actualizar ficheros de datos al azar.

Imagina que actualizas la dirección de un cliente:

  1. MySQL escribe primero el cambio en el redo log.
  2. Reconoce tu transacción como confirmada.
  3. Más tarde aplica el cambio a los ficheros de datos.

La recuperación es clave si MySQL se cae tras el paso 1 o 2 pero antes del 3. Al reiniciar, MySQL lee los redo logs y finaliza el trabajo pendiente reproduciendo los cambios. Así garantiza que no se pierdan transacciones confirmadas, aunque el fallo ocurra en mal momento.

29. ¿Qué motores de almacenamiento hay en MySQL y en qué se diferencian?

MySQL admite varios motores de almacenamiento, cada uno optimizado para distintos casos. Comparativa de los más comunes:

Motor de almacenamiento Funciones clave Ideal para
InnoDB Motor por defecto. Cumple ACID, bloqueo a nivel de fila, transacciones y claves foráneas. E-commerce, finanzas, y cualquier caso que requiera integridad.
MyISAM Lecturas rápidas, bloqueo a nivel de tabla. Sin transacciones ni claves foráneas. Aplicaciones con muchas lecturas donde prima la velocidad.
Memory Datos en RAM. Extremadamente rápido, pero se pierde al reiniciar. Caché, gestión de sesiones, datos temporales.
CSV Almacena como ficheros CSV. Sin índices. Intercambio de datos entre apps o almacenamiento plano sencillo.
Archive Alta compresión. Solo INSERT y SELECT. Sin índices. Logs o históricos consultados rara vez.
NDB (Clustered) Almacenamiento distribuido, alta disponibilidad, tolerancia a fallos, soporta transacciones. Aplicaciones distribuidas a gran escala con necesidades en tiempo real.

30. ¿Cómo establecerías un motor de almacenamiento por defecto en MySQL?

Primero, comprueba el motor por defecto actual:

SHOW ENGINES;

Se recomienda InnoDB como motor por defecto porque soporta:

  • Transacciones ACID
  • Claves foráneas
  • Recuperación ante fallos
  • Bloqueo a nivel de fila

Para cambiarlo temporalmente en tu sesión:

SET default_storage_engine = 'InnoDB';

Para cambiarlo de forma permanente, edita el archivo de configuración de MySQL y añade bajo [mysqld]:

default-storage-engine = InnoDB

31. ¿Cómo repararías tablas corruptas en MySQL?

Primero, revisa todas las bases de datos con:

mysqlcheck --check --all-databases -u root -p

Escaneará todas las tablas e informará de corrupción. Luego, puedes reparar con:

mysqlcheck --repair database_name table_name -u root -p

Las reparaciones pueden provocar pérdida de datos en corrupciones graves, así que haz copia de seguridad.

Preguntas de MySQL basadas en escenarios y resolución de problemas

Estas preguntas evalúan tu experiencia en situaciones reales complejas y tu capacidad para resolver problemas.

32. Explica un caso en el que usaras subconsultas en MySQL.

Así puedes responder a algo así:

En mi último trabajo gestioné la base de datos de un e-commerce y tenía que preparar un informe de productos. El objetivo era encontrar los que generaban ventas por encima de la media, lo que requería subconsultas para este análisis en varios pasos.

Esta fue la consulta SQL que utilicé:

SELECT 
    p.product_id,
    p.product_name,
    s.sales_amount
FROM products p
JOIN sales s ON p.product_id = s.product_id
WHERE s.sales_amount > (
    SELECT AVG(sales_amount)
    FROM sales
)
ORDER BY s.sales_amount DESC;

Primero, calculé la media de ventas de todos los productos con una subconsulta en la cláusula WHERE. Esa subconsulta actúa como umbral dinámico para medir el rendimiento de cada producto.

La consulta principal une productos y ventas para traer los detalles y el WHERE filtra los que quedan por debajo de la media.

Estructurándolo así, identifiqué productos de alto rendimiento en una sola operación, sin múltiples consultas separadas.

33. ¿Puedes explicar una situación en la que usaras joins para combinar datos de varias tablas?

Ejemplo de respuesta:

Recientemente trabajé con dos tablas principales: una con ventas por producto y otra con detalles de producto. Tenía que crear un informe con ventas, nombre, categoría y precio.

Para combinar los datos, usé un INNER JOIN en la columna común product_id para enlazar transacciones con detalles:

SELECT 
    s.sales_date,
    p.product_name,
    p.category,
    s.quantity_sold,
    p.price
FROM 
    sales s
INNER JOIN 
    products p
ON 
    s.product_id = p.product_id;

El informe ofrecía una visión clara de las tendencias y ayudó a identificar categorías fuertes y las que necesitaban atención.

34. ¿Tienes experiencia con triggers? Explica cómo los has usado.

Ejemplo de respuesta:

Sí, tengo amplia experiencia con triggers. En mi último rol implementé un trigger AFTER UPDATE para auditar cambios de precio.

Creé un trigger que captura automáticamente el histórico cuando cambia el precio de un producto. Este es el script:

CREATE TRIGGER tr_AuditPriceChanges
AFTER UPDATE ON Products
FOR EACH ROW
BEGIN
    -- Solo registra si el precio realmente cambió
    IF OLD.UnitPrice <> NEW.UnitPrice THEN
        INSERT INTO PriceAudit (
            ProductID,
            OldPrice,
            NewPrice,
            ChangedBy,
            ChangeDate,
            PercentageChange
        )
        VALUES (
            NEW.ProductID,
            OLD.UnitPrice,
            NEW.UnitPrice,
            CURRENT_USER(),
            NOW(),
            ROUND(((NEW.UnitPrice - OLD.UnitPrice) / OLD.UnitPrice * 100), 2)
        );
    END IF;
END;

Fue eficaz porque:

  1. Solo se dispara cuando hay cambios reales.
  2. Captura el usuario que hace el cambio con SYSTEM_USER.
  3. Calcula el porcentaje de variación para informes.
  4. Incluye una condición que evita registrar no-cambios debidos a actualizaciones de otras columnas.

También añadimos gestión de errores y logging al detectar casos límite con precios NULL.

Consejos para preparar una entrevista sobre MySQL

Si estás empezando tu carrera, aquí tienes algunos consejos para brillar en tu entrevista:

Domina los conceptos clave de MySQL: Aprende los fundamentos de bases de datos como indexación, transacciones y optimizador de consultas. Entiende cómo MySQL procesa consultas y gestiona el almacenamiento para escribir consultas eficientes y explicarlas con solvencia.

Practica con las manos en la masa: Instala MySQL en tu equipo y practica con regularidad. Crea bases de prueba, escribe consultas de distintos tipos y trata de optimizarlas. La práctica real te da soltura y confianza para la entrevista.

Para repasar, explora los recursos de DataCamp: 

Conoce herramientas e integraciones de MySQL: Familiarízate con MySQL Workbench u otras herramientas de gestión y monitorización básica. También puedes explorar cómo MySQL trabaja con Python y frameworks relevantes, demostrando que te mueves en un entorno real de desarrollo.

Conclusión

¡Listo! Hemos visto 34 preguntas clave de entrevista sobre MySQL para ayudarte a conseguir tu próximo trabajo. Tanto si optas a un rol de entrada como a un puesto avanzado de administración de datos, necesitas dominar los fundamentos de MySQL, la optimización de consultas y la gestión de bases de datos para destacar.

Para ampliar tu conocimiento en otros sistemas de gestión de bases de datos, echa un vistazo a los cursos de SQL de DataCamp.

Certifícate en SQL

Demuestra que tus conocimientos de SQL están preparados para el trabajo con una certificación.

Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

Soy una estratega de contenidos a la que le encanta simplificar temas complejos. He ayudado a empresas como Splunk, Hackernoon y Tiiny Host a crear contenidos atractivos e informativos para su público.

Temas

¡Sigue aprendiendo SQL con estos cursos!

Curso

Manipulación de datos en SQL

4 h
324.1K
Domina las consultas SQL para responder a preguntas de ciencia de datos y prepara conjuntos de datos para analizarlos en PostgreSQL.
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

blog

Las 99 mejores preguntas y respuestas de entrevistas sobre SQL para 2026

Ponte a punto para tus entrevistas con este resumen de preguntas y respuestas esenciales de SQL para candidatos, responsables de contratación y recruiters.
Elena Kosourova's photo

Elena Kosourova

15 min

Data engineering interview q and a

blog

Las 39 preguntas y respuestas más importantes para entrevistas de ingeniería de datos en 2026

Triunfa en tu próxima entrevista con esta recopilación de preguntas y respuestas para entrevistas de ingenieros de datos, que te ayudará a prepararte para las diferentes etapas, desde la selección de RR. HH. hasta las evaluaciones técnicas en profundidad, incluidas preguntas sobre Python y SQL.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Las 36 preguntas y respuestas más importantes sobre Python para entrevistas de trabajo en 2026

Preguntas esenciales sobre Python para entrevistas de trabajo con ejemplos para personas en busca de empleo, estudiantes de último año y profesionales de datos.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

33 preguntas de entrevista sobre Azure: De básico a avanzado

Una recopilación de las preguntas más frecuentes en las entrevistas sobre Azure, adaptadas a todos los niveles de experiencia. Tanto si eres principiante, intermedio o avanzado, estas preguntas y respuestas te ayudarán a prepararte con confianza para tu próxima entrevista de trabajo relacionada con Azure.
Josep Ferrer's photo

Josep Ferrer

15 min

blog

20 preguntas principales de la entrevista sobre SQL Joins

Prepara tu entrevista SQL con esta lista de las preguntas más comunes sobre SQL Joins
Javier Canales Luna's photo

Javier Canales Luna

15 min

Ver másVer más