Ejercicios Prácticos de SQL para Gestión de Cine: Creación, Consulta y Manipulación de Datos

Ejercicios Prácticos de SQL para Gestión de Cine

A continuación, se presentan una serie de ejercicios prácticos para la gestión de una base de datos de cine utilizando SQL. Estos ejercicios abarcan la creación de tablas, inserción de datos, consultas, actualizaciones y borrado de registros.

Creación y Modificación de Tablas

1. Crear la tabla Películas

Para crear la tabla PELICULAS con los campos Código (entero y clave primaria), Nombre (texto de tamaño 30), CalificaciónEdad (entero) y Fecha_estreno (fecha), se utiliza el siguiente comando:

CREATE TABLE películas (codigo INT PRIMARY KEY, nombre VARCHAR(30), CalificaciónEdad INT, Fecha_estreno DATE);

2. Crear la tabla Salas

Para crear la tabla SALAS con los campos Código (entero y clave primaria), Nombre (texto de tamaño 20) y Película (entero, clave externa referenciando a PELICULAS), se utiliza:

CREATE TABLE salas (codigo INT PRIMARY KEY, nombre VARCHAR(20), pelicula INT, FOREIGN KEY (pelicula) REFERENCES peliculas(codigo));

3. Copiar datos de Pelis a Películas

Si los datos para la tabla Películas ya existen en otra tabla llamada PELIS, se pueden copiar de la siguiente manera:

INSERT INTO películas SELECT * FROM pelis;

Nota: Este comando también crea la tabla películas si no existe.

19. Añadir campo Presupuesto a Películas

Para añadir un campo presupuesto de tipo float a la tabla Peliculas y actualizar los datos:

ALTER TABLE películas ADD presupuesto FLOAT; UPDATE películas SET presupuesto = 10000000 WHERE nombre = 'Expediente X';

Se pueden añadir otros valores de presupuesto según se requiera.

Consultas Simples

4. Mostrar el nombre de todas las películas

SELECT nombre FROM películas;

5. Mostrar las distintas calificaciones de edad

SELECT DISTINCT CalificaciónEdad FROM PELICULAS;

6. Mostrar películas sin calificar

SELECT * FROM películas WHERE CalificaciónEdad IS NULL;

7. Mostrar salas que no proyectan películas

SELECT * FROM salas WHERE pelicula IS NULL;

Consultas con JOIN

8. Mostrar información de salas y películas (si hay película)

SELECT * FROM salas LEFT JOIN películas ON salas.pelicula = peliculas.codigo;

9. Mostrar información de películas y salas (si hay sala)

SELECT * FROM salas RIGHT JOIN películas ON salas.pelicula = peliculas.codigo;

10. Mostrar películas que no se proyectan en ninguna sala

SELECT nombre FROM películas WHERE codigo NOT IN (SELECT pelicula FROM salas WHERE pelicula IS NOT NULL);

18. Listado de salas que han proyectado ‘Expediente X’

SELECT * FROM salas INNER JOIN peliculas ON salas.pelicula = peliculas.codigo WHERE peliculas.nombre = 'Expediente X';

23. Salas con películas de presupuesto mayor a 500,000 €

SELECT * FROM salas INNER JOIN películas ON salas.pelicula = peliculas.codigo WHERE presupuesto > 500000;

Inserción, Actualización y Borrado de Datos

11. Añadir una nueva película

INSERT INTO películas (nombre, CalificaciónEdad, Fecha_estreno) VALUES ('Un, Dos, Tres', 7, '2001-02-10');

12. Actualizar películas no calificadas

UPDATE películas SET CalificaciónEdad = 13 WHERE CalificaciónEdad IS NULL;

13. Eliminar salas que proyectan películas para todos los públicos

DELETE FROM salas WHERE película IN (SELECT codigo FROM peliculas WHERE CalificaciónEdad = 0);

Consultas con Funciones de Agregación

14. Contar películas por calificación de edad

SELECT COUNT(*), CalificaciónEdad FROM películas GROUP BY CalificaciónEdad;

15. Mostrar películas con la calificación máxima

SELECT * FROM películas WHERE CalificaciónEdad = (SELECT MAX(CalificaciónEdad) FROM películas);

17. Obtener el número de películas de cada CalificaciónEdad

SELECT CalificaciónEdad, COUNT(*) FROM películas GROUP BY CalificaciónEdad;

20. Obtener el presupuesto total de todas las películas

SELECT SUM(presupuesto) FROM películas;

21. Obtener el presupuesto total de películas estrenadas el año pasado

SELECT SUM(presupuesto) FROM películas WHERE Fecha_estreno BETWEEN '2010-01-01' AND '2010-12-31'; 

Nota: Se asume que el año pasado es 2010 para el ejemplo. Ajustar las fechas según sea necesario.

22. Obtener el número de películas proyectadas en cada sala

SELECT código, COUNT(*) FROM salas GROUP BY codigo;

Consultas con LIKE y Subconsultas

16. Mostrar películas cuyo nombre contiene ‘uno’ o ‘dos’

SELECT * FROM películas WHERE nombre LIKE '%uno%' OR nombre LIKE '%dos%';

24. Películas con presupuesto superior al promedio

SELECT * FROM películas WHERE presupuesto > (SELECT AVG(presupuesto) FROM películas);

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.