Created
September 29, 2020 15:02
-
-
Save Dalboz/f7c10104a73414b89d449ff291c02368 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* 1. Crear: base de datos y seleccionarla */ | |
CREATE DATABASE IF NOT EXISTS videoclub; | |
USE videoclub; | |
SET character_set_server = utf8mb4; | |
SET collation_server = 'utf8mb4_general_ci'; | |
/* 2. Crear tabla: socio */ | |
CREATE TABLE socios ( | |
codigo VARCHAR(10) NOT NULL, | |
nombre VARCHAR(20) NOT NULL, | |
apellidos VARCHAR(30) NOT NULL, | |
direccion VARCHAR(40) NOT NULL, | |
telefono INT UNSIGNED | |
); | |
/* 3. Crear tabla: alquileres */ | |
CREATE TABLE alquileres ( | |
cod_socio VARCHAR(10) NOT NULL, | |
cod_pelicula VARCHAR(10) NOT NULL, | |
fecha_alquiler DATE NOT NULL, | |
dias_alquiler INT UNSIGNED NOT NULL | |
); | |
/* 4. Crear tabla: peliculas */ | |
CREATE TABLE peliculas ( | |
codigo VARCHAR(10) NOT NULL, | |
titulo VARCHAR(60) NOT NULL, | |
estilo VARCHAR(40) NOT NULL | |
); | |
/* 5.1 Añadir claves primarias */ | |
ALTER TABLE socios ADD PRIMARY KEY (codigo); | |
ALTER TABLE alquileres ADD PRIMARY KEY (cod_socio,cod_pelicula,fecha_alquiler); | |
ALTER TABLE peliculas ADD PRIMARY KEY (codigo); | |
/* 5.2 Añadir claves foraneas */ | |
ALTER TABLE alquileres ADD FOREIGN KEY (cod_socio) REFERENCES socios(codigo); | |
ALTER TABLE alquileres ADD FOREIGN KEY (cod_pelicula) REFERENCES peliculas(codigo); | |
/* 6. Inicio: inserción de datos */ | |
INSERT INTO socios VALUES | |
('C_1','Rosa','Pérez Pérez', 'Del Valle', 333444455), | |
('C_2','Enrique','García López', 'Del Valle', ''), | |
('C_3','Juan','Sánchez Gil', 'Paseo Recoletos', 8888888), | |
('C_4','Ana','Rodríguez Pla', 'De la Luz', 5555555); | |
INSERT INTO peliculas VALUES | |
('P_1','El rey león', 'Infantil'), | |
('P_2','Hotel Transilvania', 'Infantil'), | |
('P_3','La Naranja Mecánica','Terror'), | |
('P_4','El Jovencito Frankestein','Comedia'); | |
INSERT INTO alquileres VALUES | |
('C_1','P_2','20190112', 3), | |
('C_2','P_2','20190212', 5), | |
('C_3','P_2','20191112', 2), | |
('C_1','P_3','20190301', 10), | |
('C_2','P_1','20190123', 4), | |
('C_2','P_4','20190317', 6); | |
/* Fin de definición de datos */ | |
/* Inicio de consultas */ | |
/* 7. Consulta: titulo, genero de peliculas por socios de la calle del valle */ | |
SELECT | |
peliculas.titulo, | |
peliculas.estilo | |
FROM | |
alquileres | |
INNER JOIN socios ON socios.codigo = alquileres.cod_socio | |
INNER JOIN peliculas ON peliculas.codigo = alquileres.cod_pelicula | |
WHERE socios.direccion like '%del valle%' | |
GROUP BY peliculas.estilo; | |
/* 8. Consulta: listado con los alquileres (todos los datos) del socio Enrique García López */ | |
SELECT | |
alquileres.cod_socio, | |
socios.nombre, | |
socios.apellidos, | |
alquileres.cod_pelicula, | |
peliculas.titulo, | |
alquileres.fecha_alquiler, | |
alquileres.dias_alquiler | |
FROM | |
alquileres | |
INNER JOIN peliculas ON peliculas.codigo = alquileres.cod_pelicula | |
INNER JOIN socios ON socios.codigo = alquileres.cod_socio | |
WHERE | |
CONCAT(socios.nombre, ' ', socios.apellidos) LIKE '%Enrique García López%'; | |
/* 9. Consulta: listado de socios que han realizado alquileres de peliculas infantiles | |
El listado mostrará: Apellidos, nombre, y telefono ordenado alfabéticamente por apellidos y nombre */ | |
SELECT DISTINCT | |
socios.apellidos, | |
socios.nombre, | |
socios.telefono | |
FROM | |
alquileres | |
INNER JOIN peliculas ON peliculas.codigo = alquileres.cod_pelicula | |
INNER JOIN socios ON socios.codigo = alquileres.cod_socio | |
WHERE | |
peliculas.estilo = 'Infantil' | |
ORDER BY socios.apellidos,socios.nombre ASC; | |
/* 10. Consulta: obtener el nombre completo de todos los socios que han alquilado la pelicula HOTEL TRANSILVANIA */ | |
SELECT | |
CONCAT( | |
socios.nombre, | |
' ', | |
socios.apellidos | |
) AS 'Nombre completo' | |
FROM | |
alquileres | |
INNER JOIN peliculas ON peliculas.codigo = alquileres.cod_pelicula | |
INNER JOIN socios ON socios.codigo = alquileres.cod_socio | |
WHERE | |
peliculas.titulo LIKE '%HOTEL TRANSILVANIA%'; | |
/* 11. Consulta: obtener el nombre completo de los socios que han alquilado peliculas por mas de 3 dias */ | |
SELECT | |
CONCAT( | |
socios.nombre, | |
' ', | |
socios.apellidos | |
) AS 'Nombre completo' | |
FROM | |
socios | |
INNER JOIN( | |
SELECT | |
cod_socio | |
FROM | |
alquileres | |
WHERE | |
dias_alquiler > 3 | |
GROUP BY | |
cod_socio | |
) AS p | |
ON | |
socios.codigo = p.cod_socio; | |
/* 12. Consulta: obtener un listado de socios (Apellido, Nombre y telefono) que no han alquilado ninguna pelicula */ | |
SELECT | |
socios.apellidos, | |
socios.nombre, | |
socios.telefono | |
FROM | |
socios | |
WHERE | |
socios.codigo NOT IN( | |
SELECT | |
alquileres.cod_socio | |
FROM | |
alquileres | |
); | |
/* 13. Consulta: obtener el codigo y el titulo de las peliculas alquiladas por Enrique García López y Juan Sánchez Gil */ | |
( | |
SELECT DISTINCT | |
alquileres.cod_pelicula, | |
peliculas.titulo | |
FROM | |
alquileres | |
INNER JOIN peliculas ON peliculas.codigo = alquileres.cod_pelicula | |
INNER JOIN socios ON socios.codigo = alquileres.cod_socio | |
WHERE | |
CONCAT( | |
socios.nombre, | |
' ', | |
socios.apellidos | |
) LIKE '%Enrique García López%' OR '%Juan Sánchez Gil%' | |
); | |
/* Fin de la actividad */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment