Apuntes DAM
Volver al inicio

Ejercicios de SQL para practicar

25 ejercicios de SQL de los módulos de Bases de Datos. Consultas sobre bases de datos de ejemplo (una tienda, una biblioteca…): SELECT, JOIN, GROUP BY, subconsultas, INSERT, UPDATE, DELETE, vistas y disparadores.

Cada ejercicio trae enunciado, pistas, solución y pruebas automáticas: escribes el código aquí mismo, lo ejecutas y ves al momento si es correcto. Tu progreso se guarda en el tema del que sale cada ejercicio.

BBDD · Consultas SQL Avanzadas ver el tema

  • Encuentra el fallo: los clientes sin email

    Fácil

    La consulta debería mostrar el nombre de los clientes que no tienen email, pero no devuelve ninguna fila. Corrígela.

  • Encuentra el fallo: las prioridades de AND y OR

    Medio

    Se quieren los productos de las categorías Periféricos o Audio que cuesten menos de 50 €, ordenados por nombre. La consulta devuelve también el teclado mecánico, que cuesta 89,90 €. Corrígela.

  • Encuentra el fallo: la media que sale entera

    Medio

    Se quiere la media de unidades por pedido. La consulta da 2, pero entre los 5 pedidos suman 13 unidades. Corrígela para que dé el resultado exacto.

  • Encuentra el fallo: el pedido fantasma

    Medio

    La consulta cuenta los pedidos de cada cliente, incluidos los que no tienen ninguno. Pero Marta Díaz, que nunca ha comprado, aparece con 1 pedido. Corrígela.

  • Encuentra el fallo: el LEFT JOIN que pierde clientes

    Difícil

    Se quiere, para cada cliente, cuántos pedidos tiene entregados, con 0 para los que no tienen ninguno, ordenado por id de cliente. Lucía y Marta no aparecen. Corrígela sin quitar el LEFT JOIN.

  • Encuentra el fallo: las bajas que lo borran todo

    Muy difícil

    La tabla Bajas guarda los emails de quienes se han dado de baja del boletín; uno se registró vacío (NULL). Se quiere el nombre de los clientes con email que siguen suscritos, por orden alfabético. La consulta no devuelve nada. Corrígela.

BBDD · Modificación de Datos en SQL ver el tema

  • Encuentra el fallo: la actualización que no actualiza nada

    Fácil

    Hay que poner a 0 el stock de los productos de la categoría Audio, pero al ejecutar la sentencia no cambia ninguna fila. Corrígela.

  • Encuentra el fallo: el stock que se vuelve NULL

    Difícil

    Al enviar el pedido 3 hay que descontar del stock las unidades de cada uno de sus productos. Tras ejecutar la sentencia, el stock de los productos que no están en ese pedido queda vacío (NULL). Corrígela para que solo cambien los productos del pedido.

BBDD · Programación en Bases de Datos ver el tema

  • Encuentra el fallo: el disparador que descuenta a todos

    Difícil

    El disparador debería restar del stock del producto vendido las unidades de cada nueva línea de pedido. Al insertar una línea con 5 ratones, baja el stock de todos los productos. Corrígelo (el INSERT de prueba se queda igual).

BBDD · Ejercicios de Bases de Datos ver el tema

  • Productos baratos

    Fácil

    Muestra el nombre y el precio de los productos que cuestan menos de 50 €, ordenados de más barato a más caro.

  • Clientes sin email

    Fácil

    Muestra el nombre y la ciudad de los clientes que no tienen email registrado.

  • Búsqueda por patrón

    Fácil

    Muestra los productos cuyo nombre contiene la palabra «portátil» o empieza por «Disco», sin distinguir mayúsculas. Devuelve solo el nombre.

  • Alta de un producto

    Fácil

    Da de alta el producto 9: «Alfombrilla XL», categoría «Periféricos», 14.95 €, 80 unidades, proveedor «Logitech», fecha de alta 2024-07-01.

  • Estadísticas del catálogo

    Medio

    Para cada categoría muestra: número de productos, precio mínimo, precio máximo y stock total, ordenado por categoría.

  • Pedidos con su cliente

    Medio

    Lista cada pedido con su número, la fecha, el nombre del cliente y la ciudad, ordenado por fecha.

  • Importe de cada pedido

    Medio

    Calcula el importe total de cada pedido (suma de cantidad × precio unitario de sus líneas), mostrando el número de pedido y el importe redondeado a 2 decimales, del mayor al menor.

  • Clientes que nunca han comprado

    Medio

    Muestra el nombre de los clientes que no tienen ningún pedido. Resuélvelo con LEFT JOIN o con NOT EXISTS.

  • Ciudades de clientes y proveedores

    Medio

    Obtén una lista única de «nombres» que aparecen como ciudad de algún cliente o como proveedor de algún producto, ordenada alfabéticamente.

  • Subida de precios

    Medio

    Sube un 5 % el precio de los productos del proveedor «Samsung», redondeando a 2 decimales.

  • Crear una vista

    Medio

    Crea la vista StockBajo con el nombre, la categoría y el stock de los productos con menos de 25 unidades.

  • Productos más caros que la media de su categoría

    Difícil

    Muestra el nombre, la categoría y el precio de los productos cuyo precio supera la media de su propia categoría.

  • Mejor cliente por gasto

    Difícil

    Muestra el nombre del cliente que más ha gastado en total y su gasto (2 decimales). Si hubiera empate basta con uno.

  • Categorías con más de 100 € vendidos

    Difícil

    Muestra las categorías cuyo importe vendido supera los 100 €, con el importe (2 decimales), de mayor a menor.

  • Borrado con subconsulta

    Difícil

    Elimina los pedidos en estado «pendiente» de clientes de Madrid. Recuerda borrar antes sus líneas de DetallePedido para no dejar huérfanos.

  • Trigger de auditoría

    Difícil

    Crea la tabla HistorialPrecios(producto_id, precio_anterior, precio_nuevo) y un trigger que inserte una fila en ella cada vez que cambie el precio de un producto. Pruébalo subiendo 10 € el precio del producto 3.