You are on page 1of 3
TALLER N° 03 DISENO DE LA BASE DE DATOS CINEMAS IDPELICULA, IOPELICULA | | “peRoy [Proyecta 9) NUM_SALA cn ee nee } (—OeRPE 4d NUM_ENTRADA | por | [_ mum cure NUM_CUENTE | Implementacion de la base de datos cinemas haciendo uso de la integridad referencial CREATE DATABASE CINEMAS; USE CINEMAS; CREATE TABLE PELICULAS( IDPELICULA SMALLINT NOT NULL AUTO_INCREMENT, TITULO GHAR(50) NOT NULL, ACTORES MEDIUMTEXT, PRODUCCION MEDIUMTEXT, GUION VARCHAR(40), ANNO SMALLINT, DURACION SMALLINT NOT NULL, NACIONALIDAD VARCHAR(25), GENERO ENUM(INFANTIL’, ‘COMEDIA’, ‘DRAMA’, ‘ACCION, TERROR, 'EROTICA’), EDAD_RESTRICCION ENUM(APTA\, 'MAYORES 7', 'MAYORES 13’, "MAYORES 18), ‘SINOPSIS LONGTEXT, CARTELERA BLOB, PRIMARY KEY (IDPELICULA) » ALTER TABLE PELICULAS ADD DIRECCION MEDIUMTEXT; INSERT INTO PELICULAS(TITULO, ACTORES, PRODUCCION, DIRECCION, GUION, ANNO, DURACION, NACIONALIDAD, GENERO, EDAD_RESTRICCION, SINOPSIS) VALUES(12 ANOS DE ESCLAVITUD’, ‘RICHARD HEICH’, ‘UNIVERSAL’, "CLAUSE DAMNE’, 'HISTORICA’, 2015, 2, EEUU’, ‘DRAMA’, 'MAYORES 13, "HISTORIA DE LA ESCLAVITUD); (CREATE TABLE SALAS( NUM_SALA SMALLINT NOT NULL, AFORO SMALLINT NOT NULL, NUM_FILAS SMALLINT NOT NULL, OBSERVACIONES LONGTEXT, PRIMARY KEY (NUM_SALA) % INSERT INTO SALAS(NUM_SALA, AFORO, NUM_FILAS) VALUES (1,180,10); INSERT INTO SALAS(NUM_SALA, AFORO, NUM_FILAS) VALUES (2,180, 10); CREATE TABLE CLIENTES ( NUM_CLIENTE SMALLINT NOT NULL AUTO_INCREMENT, NOMBRE VARCHAR(40) NOT NULL, DIRECCION VARCHAR(50), FECHANAC DATE, TELEF CHAR(®), EMAIL CHAR(30), PUNTOS_ACUM SMALLINT NOT NULL DEFAULT 0, CLAVE CHAR(6) NOT NULL, PRIMARY KEY(NUM_CLIENTE) ); INSERT INTO CLIENTES(NOMBRE, DIRECCION, FECHANAC, TELEF, EMAIL, PUNTOS_ACUM, CLAVE) VALUES(JUAN PEREZ’, ‘PRECURSORES 125’, '1980-12-12', ‘IPEREZ@LINEA.COM, 215, 123456"); CREATE TABLE PROYECCIONES( IDPROY SMALLINT NOT NULL AUTO_INCREMENT, IDPELICULA SMALLINT NOT NULL, NUM_SALA SMALLINT NOT NULL, HORA TIME NOT NULL, FECHA DATE NOT NULL, TARIFA_REDUCIDA BOOL, ESTRENO BOOL, PRIMARY KEY(IDPROY), INDEX (IDPELICULA), FOREIGN KEY (IDPELICULA) REFERENCES PELICULAS(IDPELICULA), INDEX (NUM_SALA), FOREIGN KEY (NUM_SALA) REFERENCES SALAS(NUM_SALA) ); INSERT INTO PROYECCIONES(IDPROY, IDPELICULA, NUM_SALA, HORA, FECHA) VALUES(1, 1,2,'16:30:00", '2018-5-16'); CREATE TABLE ENTRADAS( NUM_ENTRADA SMALLINT NOT NULL AUTO_INCREMENT, IDPROY SMALLINT NOT NULL, FILA SMALLINT NOT NULL, NUM_ASIENTO SMALLINT NOT NULL, NUM_CLIENTE SMALLINT NOT NULL, RECOGIDA BOOL, PRIMARY KEY(NUM_ENTRADA), INDEX(IDPROY), FOREIGN KEY (IDPROY) REFERENCES PROYECCIONES(IDPROY), INDEX(NUM_CLIENTE), FOREIGN KEY (NUM_CLIENTE) REFERENCES CLIENTES(NUM_CLIENTE) ); INSERT INTO ENTRADAS(IDPROY, FILA, NUM_ASIENTO, NUM_CLIENTE, RECOGIDA) VALUES(1,3,125,1,1); BUSQUEDAS: 1. Mostrar las salas disminuyendo el aforo en un 10%. SELECT NUM_SALA, AFORO*0.9 FROM SALAS; 2. Mostrar todos los directores de peticulas, sin duplicidad SELECT DISTINCT DIRECTOR FROM PELICULAS; 3. Mostrar las peliculas de una duracién inferior a 120 minutos ‘SELECT TITULO FROM PELICULAS WHERE DURACION < 120; 4, Mostrar las direcciones de correo electronico de todos los clientes que tengan 1000 puntos acumulados ‘SELECT EMAIL FROM CLIENTES WHERE PUNTOS_ACUM = 1000; 5. Mostrar las entradas para la proyeccién de numero de identificacién 341 y que correspondan a filas comprendidas entre la 10 y la 14 ‘SELECT * FROM ENTRADAS WHERE IDPROY = 341 AND FILA BETWEEN 10 AND 14; 6. Mostrar todas las peliculas de nacionalidad peruana, francesa o italiana ‘SELECT TITULO FROM PELICULAS WHERE NACIONALIDAD IN(peruana’, francesa’ 'taliana’); 7. Mostrar los titulos y los directores de todas las peliculas en las que participe Magaly Solier ‘SELECT TITULO, DIRECCION FROM PELICULAS WHERE ACTORES LIKE “%SOLIER%'; 8. Generar un listado de clientes en orden decreciente seguin el atributo de puntos acumulados y en orden creciente segtin el nombre. SELECT * FROM CLIENTES ORDER BY PUNTOS_ACUM DESC, NOMBRE ASC; 9. Mostrar las fechas en las que se proyecta la pelicula La boca del lobo ‘SELECT FECHA FROM PELICULAS, PROYECCIONES WHERE TITULO ='La boca del Lobo’ AND PELICULAS.IDPELICULA = PROYECCIONES.IDPELICULA; 10. Mostrar los nombres de los clientes que hayan adquirido alguna entrada para ver la pelicula La boca del Lobo SELECT NOMBRE FROM PELICULAS, PROYECCIONES, ENTRADAS, CLIENTES WHERE TITULO =" La boca del Lobo’ AND PELICULAS. IDPELICULA=PROYECCIONES.IDPELICULA AND. PROYECCIONES.IDPROY =ENTRADAS.IDPROY AND ENTRADAS.NUM_CLIENTE =CLIENTES.NUM_CLIENTE; 11. Calcule la duracién media de todas las peliculas del género comedia. ‘SELECT AVG(DURACION) FROM PELICULAS WHERE GENERO='comedia’; 12. Obtener la capacidad de aforo de la sala mas grande ‘SELECT MAX(AFORO) FROM SALAS; 13. Calcular la suma de los puntos acumulados por los clientes numero 321, 543, 287 y 721 SELECT SUM(PUNTOS_ACUM) FROM CLIENTES WHERE NUM_CLIENTE IN(321, 543, 287, 721); 14, Obtener el numero total de peliculas de nacionalidad peruana ‘SELECT COUNT(*) FROM PELICULAS WHERE NACIONALIDAD = ‘peruat 15. Obtener para cada género de peliculas, la duracién maxima SELECT MAX(DURACION) FROM PELICULAS GROUP BY GENERO; 16. Contar el ntimero de entradas compradas por cada cliente ‘SELECT NOMBRE, COUNT(NUM_ENTRADA) FROM CLIENTES.ENTRADAS WHERE, CLIENTES.NUM_CLIENTE = ENTRADAS.NUM_CLIENTE GROUP BY NOMBRE; 17. Obtener el nombre de todos los clientes que hayan adquirido 20 o mas entradas. ‘SELECT NOMBRE, COUNT(NUM_ENTRADA) FROM CLIENTES, ENTRADAS WHERE CLIENTES.NUM_CLIENTE = ENTRADAS.NUM_CLIENTE GROUP BY NOMBRE HAVING COUNT(NUM_ENTRADA) >=20;