0% encontró este documento útil (0 votos)
89 vistas5 páginas

Ejercicio SQL Con Base Importada

El documento presenta una serie de ejercicios prácticos en MySQL, organizados en categorías de sencillos a complejos, utilizando la base de datos de ejemplo Sakila. Incluye instrucciones para importar la base de datos, realizar consultas básicas y avanzadas, y optimizar el rendimiento mediante índices y triggers. Además, se proporciona una guía para descargar e importar la base de datos Sakila en MySQL, así como ejemplos de consultas para practicar.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
89 vistas5 páginas

Ejercicio SQL Con Base Importada

El documento presenta una serie de ejercicios prácticos en MySQL, organizados en categorías de sencillos a complejos, utilizando la base de datos de ejemplo Sakila. Incluye instrucciones para importar la base de datos, realizar consultas básicas y avanzadas, y optimizar el rendimiento mediante índices y triggers. Además, se proporciona una guía para descargar e importar la base de datos Sakila en MySQL, así como ejemplos de consultas para practicar.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Ejercicios de Práctica en MySQL: Sencillos y Complejos

Aquí tienes una serie de ejercicios en MySQL, desde los más sencillos hasta los más
complejos, que puedes hacer importando una base de datos grande. La base de datos
puede ser, por ejemplo, Sakila, que es una base de datos de ejemplo de una tienda de
alquiler de películas. Si no la tienes, puedes descargarla desde aquí.

Ejercicios Sencillos:

1. Importar la Base de Datos Sakila:


o Descarga y importa la base de datos Sakila en tu servidor MySQL:
o mysql -u root -p < [Link]
o mysql -u root -p < [Link]
oSi estás usando una interfaz gráfica como phpMyAdmin, puedes
importar los archivos .sql desde la sección de importación.
2. Consulta Simple: Seleccionar todos los actores
o Realiza una consulta para seleccionar todos los registros de la tabla
actor.
o SELECT * FROM actor;
3. Consulta con Filtros: Buscar actores por nombre
o Filtra los actores cuyo apellido sea 'Hanks'.
o SELECT * FROM actor WHERE last_name = 'Hanks';
4. Consulta con Ordenación: Ordenar actores por apellido
o Muestra todos los actores ordenados por apellido de manera ascendente.
o SELECT * FROM actor ORDER BY last_name ASC;
5. Contar Registros: Número de películas
o Realiza una consulta que te devuelva el número total de películas en la
base de datos.
o SELECT COUNT(*) FROM film;

Ejercicios Complejos:

1. Join entre Tablas: Obtener información del alquiler de películas


o Realiza una consulta que te devuelva el nombre del cliente y el título de
la película que ha alquilado, uniendo las tablas customer, rental,
inventory, y film.
o SELECT customer.first_name, customer.last_name, [Link]
o FROM rental
o JOIN inventory ON rental.inventory_id =
inventory.inventory_id
o JOIN film ON inventory.film_id = film.film_id
o JOIN customer ON rental.customer_id =
customer.customer_id;
2. Agregación: Total de alquileres por película
o Realiza una consulta que te devuelva el total de alquileres realizados por
cada película.
o SELECT [Link], COUNT(rental.rental_id) AS
total_rentals
o FROM film
o JOIN inventory ON film.film_id = inventory.film_id
o JOIN rental ON inventory.inventory_id =
rental.inventory_id
o GROUP BY [Link]
o ORDER BY total_rentals DESC;
3. Subconsulta: Películas no alquiladas
o Escribe una consulta que muestre las películas que no han sido
alquiladas.
o SELECT title
o FROM film
o WHERE film_id NOT IN (
o SELECT film_id
o FROM inventory
o WHERE inventory_id IN (
o SELECT inventory_id
o FROM rental
o )
o );
4. Uso de Funciones de Agregación y Grupo: Promedio de tiempo de alquiler
por cliente
o Calcula el tiempo promedio de alquiler (en días) para cada cliente.
o SELECT customer.first_name, customer.last_name,
AVG(DATEDIFF(rental.return_date, rental.rental_date)) AS
avg_rental_days
o FROM rental
o JOIN customer ON rental.customer_id = customer.customer_id
o GROUP BY customer.customer_id
o ORDER BY avg_rental_days DESC;
5. Consulta Compleja con Condiciones y Funciones: Clientes con más de 10
alquileres
o Devuelve los clientes que han realizado más de 10 alquileres, junto con
el total de películas alquiladas.
o SELECT customer.first_name, customer.last_name,
COUNT(rental.rental_id) AS total_rentals
o FROM rental
o JOIN customer ON rental.customer_id = customer.customer_id
o GROUP BY customer.customer_id
o HAVING total_rentals > 10
o ORDER BY total_rentals DESC;
6. Transacciones: Actualización de Inventario
o Supón que se han hecho 5 devoluciones de una película y se debe
actualizar el inventario. Escribe un bloque de código que lo haga
utilizando una transacción para asegurar que la actualización sea
atómica.
o START TRANSACTION;
o UPDATE inventory
o SET quantity = quantity + 5
o WHERE film_id = 1; -- Suponiendo que 1 es el ID de la
película
o COMMIT;
7. Creación de Índices: Mejorar la Performance de las Consultas
o Si observas que las consultas sobre las tablas film, rental y customer
son lentas, puedes crear un índice sobre las columnas que más se usan en
las consultas (por ejemplo, customer_id o film_id).
o CREATE INDEX idx_customer_id ON rental (customer_id);
o CREATE INDEX idx_film_id ON rental (film_id);
8. Triggers: Registro de Devoluciones de Películas
o Crea un trigger que se active cada vez que se registre una devolución en
la tabla rental y que registre la fecha de devolución en una tabla de
auditoría.
o DELIMITER //
o CREATE TRIGGER after_rental_return
o AFTER UPDATE ON rental
o FOR EACH ROW
o BEGIN
o IF OLD.return_date IS NULL AND NEW.return_date IS NOT
NULL THEN
o INSERT INTO rental_audit (rental_id, return_date,
action_time)
o VALUES (NEW.rental_id, NEW.return_date, NOW());
o END IF;
o END;
o //
o DELIMITER ;

Conclusión

Estos ejercicios cubren aspectos clave de la manipulación de bases de datos en MySQL:


desde consultas sencillas hasta técnicas avanzadas como agregación, subconsultas, y
transacciones. A medida que vayas resolviendo estos ejercicios, irás familiarizándote
con las mejores prácticas y optimizaciones para manejar bases de datos grandes.

COMO DESCARGAR BASE SAKILA EN MY SQL

Para descargar e importar la base de datos Sakila en MySQL, puedes seguir los
siguientes pasos:

Paso 1: Descargar la base de datos Sakila

La base de datos Sakila es proporcionada oficialmente por MySQL como un ejemplo de


base de datos para probar y aprender. Puedes descargarla desde el sitio web oficial de
MySQL.

1. Descargar la base de datos Sakila:


o Visita el sitio oficial de MySQL para obtener los archivos de la base de
datos Sakila:
 Descargar Sakila (MySQL)
 Allí encontrarás los archivos [Link] y sakila-
[Link].

Alternativamente, puedes encontrar el archivo directamente en este enlace:

o Descargar [Link]

Una vez descargado, tendrás un archivo comprimido que contiene los scripts
[Link] (estructura de la base de datos) y [Link] (datos
de la base de datos).

Paso 2: Importar la base de datos Sakila en MySQL

Opción 1: Usando la línea de comandos (Terminal o CMD)


Si tienes MySQL instalado en tu sistema y tienes acceso a la terminal o línea de
comandos, puedes seguir estos pasos:

1. Accede a la terminal o CMD:


o En Linux/MacOS, abre la terminal.
o En Windows, abre el cmd o MySQL Command Line Client.
2. Conéctate a MySQL:
o Escribe el siguiente comando para conectarte a tu servidor MySQL. Se te
pedirá tu contraseña de MySQL:
o mysql -u root -p

Si estás usando un usuario diferente a root, reemplaza root por tu


nombre de usuario.

3. Crear la base de datos Sakila:


o Antes de importar los archivos, necesitas crear la base de datos en
MySQL. Ejecuta el siguiente comando en la consola de MySQL:
o CREATE DATABASE sakila;
4. Importar el esquema:
o Usa el comando source para importar el archivo [Link]
que contiene la estructura de la base de datos. Si el archivo está en la
misma carpeta donde estás trabajando, puedes usar el siguiente comando:
o source /path/to/[Link];

Asegúrate de sustituir /path/to/ con la ruta real al archivo en tu


sistema.

5. Importar los datos:


o Ahora, importa los datos usando el archivo [Link]:
o source /path/to/[Link];

Si no tienes el archivo .sql en la misma carpeta que la terminal, asegúrate de


escribir la ruta completa del archivo.

6. Verifica la importación:
o Una vez completada la importación, puedes verificar si todo está correcto
ejecutando una consulta como:
o USE sakila;
o SHOW TABLES;

Opción 2: Usando phpMyAdmin (Interfaz gráfica)

Si prefieres usar una interfaz gráfica como phpMyAdmin, sigue estos pasos:

1. Accede a phpMyAdmin:
o Abre phpMyAdmin desde tu navegador (usualmente en
[Link] si estás usando un servidor local).
2. Crear una nueva base de datos:
o Ve a la pestaña "Bases de datos" y crea una nueva base de datos llamada
sakila.
3. Importar los archivos:
o Haz clic en la base de datos sakila recién creada.
o Ve a la pestaña "Importar".
o Haz clic en "Seleccionar archivo" y selecciona el archivo sakila-
[Link] desde tu computadora.
o Haz clic en "Continuar" para importar la estructura de la base de datos.
4. Importar los datos:
o Luego de importar el esquema, repite el mismo proceso para importar el
archivo [Link].
5. Verifica la importación:
o Una vez completada la importación, podrás ver todas las tablas en la base
de datos sakila. Puedes verificar con una consulta como:
o SHOW TABLES;

Paso 3: Usar la base de datos Sakila

Ya que la base de datos está importada correctamente, puedes empezar a realizar


consultas y practicar con los datos. Algunas consultas básicas que puedes probar:

 Ver todas las tablas:


 SHOW TABLES;
 Consultar los primeros 10 registros de la tabla actor:
 SELECT * FROM actor LIMIT 10;
 Consultar los clientes que han alquilado películas:
 SELECT customer.first_name, customer.last_name,
rental.rental_date
 FROM rental
 JOIN customer ON rental.customer_id = customer.customer_id
 LIMIT 10;

¡Y eso es todo! Ahora tienes la base de datos Sakila instalada y lista para ser utilizada
en MySQL. Puedes comenzar a practicar consultas, uniones, agregaciones y otras
operaciones sobre este conjunto de datos.

También podría gustarte