UAM

Introducción al Diseño de Bases de Datos Soto Hernández Christian 205318638 20-Junio-10 Práctica 2 VIDEO CLUB

OBJETIVOS: Implementar el diseño de la base de datos de un video club y realizar 40 consultas que sean de utilidad al administrador. INTRODUCCION: La base de datos del video club fue diseñada bajo el sistema E-R, se llegaron a 5 tablas, titulo, copia_titulo, miembro, renta, reservación. DESARROLLO:
Primero se crean las tablas a usar: CREATE TABLE titulo( id_titulo number(6) PRIMARY KEY, titulo varchar2(20) NOT NULL, sinopsis varchar2(80) NOT NULL, genero varchar2(20) CHECK(genero IN('drama','comedia','accion','infantil','documental')), rating varchar2(4) CHECK(rating IN('g','pg','r','nc17','nr')), f_estreno DATE NOT NULL); CREATE TABLE miembro( id_miembro number(4) PRIMARY KEY, nombres varchar2(20) NOT NULL, apellidos varchar2(30) NOT NULL, calle varchar2(15) NOT NULL, col varchar2(15) NOT NULL, no_tel varchar2(10) NOT NULL, email varchar2(25) NOT NULL); CREATE TABLE copia_titulo( no_copia number(10), id_titulo number(6), estado varchar2(12) CHECK(estado IN('disponible','rentado','destruida')), CONSTRAINT copia_pk PRIMARY KEY (no_copia,id_titulo), CONSTRAINT copia_fk FOREIGN KEY (id_titulo) REFERENCES titulo (id_titulo) ON DELETE CASCADE); CREATE TABLE reservacion( f_reservacion DATE, id_titulo number(6), id_miembro number(4), CONSTRAINT reservacion_pk PRIMARY KEY (f_reservacion,id_titulo,id_miembro), CONSTRAINT res_fk1 FOREIGN KEY (id_titulo) REFERENCES titulo (id_titulo) ON DELETE CASCADE, CONSTRAINT res_fk2 FOREIGN KEY (id_miembro) REFERENCES miembro (id_miembro) ON DELETE CASCADE); CREATE TABLE renta( id_miembro number(4), id_titulo number(6), no_copia number(10), f_renta DATE, f_dev_deseada DATE NOT NULL, f_dev_real DATE, CONSTRAINT renta_pk PRIMARY KEY (id_miembro,id_titulo,no_copia,f_renta), CONSTRAINT renta_fk1 FOREIGN KEY (id_miembro) REFERENCES miembro (id_miembro) ON DELETE CASCADE, CONSTRAINT renta_fk2 FOREIGN KEY (no_copia,id_titulo) REFERENCES copia_titulo (no_copia,id_titulo) ON DELETE CASCADE); Despues se llenan con registros:

Títulos: SQL> INSERT INTO titulo(id_titulo,titulo,sinopsis,genero,rating,f_estreno) 2 VALUES 3 (1,'bob esponja','las aventura de bob esponja al tratar de recuperar la cor ona del rey neptuno','infantil','r','14-02-08'); 1 fila creada. SQL> INSERT INTO titulo 2 VALUES 3 (2,'La mascara','stanli se encuentra una mascara que lo convierte en un ers onaje loco','comedia','g','22-07-98'); 1 fila creada. SQL> INSERT INTO titulo 2 VALUES 3 (3,'Osos de la montaña','un documental de la vida de los osos','documental' ,'pg','25-03-01'); 1 fila creada. SQL> INSERT INTO titulo(id_titulo,titulo,sinopsis,genero,rating,f_estreno) 2 VALUES 3 (4,'Rambo','Morir por algo, vivir por nada','accion','r','25-12-92'); 1 fila creada. SQL> INSERT INTO titulo(id_titulo,titulo,sinopsis,genero,rating,f_estreno) 2 VALUES 3 (5,'El gato','historia de un gato que ayuda a unos ninios a divertirse','in fantil','r','17-08-05'); 1 fila creada. SQL> INSERT INTO titulo(id_titulo,titulo,sinopsis,genero,rating,f_estreno) 2 VALUES 3 (6,'Principe de persia','Basada en el videojuego narra las aventuras del pr incipe y la daga del tiempo','accion','pg','28-05-10'); 1 fila creada. SQL> INSERT INTO titulo 2 Values (7,'karate kid','la historia de como un chico aprende artes marciale s del maestro miyagui','accion','r','18-06-85'); 1 fila creada. SQL> INSERT INTO titulo 2 VALUES (8,'la vida es bella','el sacrificio de un padre para salvar a su hi jo de los horrores de la guerra','drama','nc17','15-04-99'); 1 fila creada. SQL> INSERT INTO titulo 2 VALUES (9,'tiburones','un documental sobre el comportamiento de los tiburon es en el mar azul','documental','nr','12-12-97'); 1 fila creada.

SQL> INSERT INTO titulo 2 VALUES (10,'leberen a willi','historia de un ninio que se roba una ballena' ,'drama','pg','22-08-88'); 1 fila creada. SQL> INSERT INTO titulo 2 VALUES (11,'el gordo y el flaco','una pareja comica que dirvierten a cualqu iera','comedia','g','01-05-00'); 1 fila creada. Miembros: SQL> INSERT INTO miembro(id_miembro,nombres,apellidos,calle,col,no_tel,email) 2 VALUES (1,'alan','garcia','siempre viva','bo. xochiaca','22288675','sky_noa h@hotmail.com'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (2,'rocheli','flores mendez','calle naranjos','ixtapaluca','17098426 ','shinabu_roche@hotmail.com'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (3,'cristofer','guacamayo','avenida 4','col neza','48561289','crito_ fer@hotmail.com'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (4,'ruben','flores cruz','ave maria','taxquenia','54285569','ruben.u .am@hotmail.com'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (5,'heber','morales','calle panteon','los muertos','45128896','ireli ugs@hotmail.com'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (6,'bob esponja','pantalones cuadrados','calle calamardo','fondo de bikini','22558877','amarillo@bikini'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (7,'nayeli','garcia','calle margarita','col neza','12564482','ncgyo@ hotmail.com'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (8,'moe','sislac','taberna de moe','springfield','44123685','moesisl

ac@sims'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (9,'jhon','bonachon','calle garfield','gato','36695210','jhon_g@gmai l.com'); 1 fila creada. SQL> INSERT INTO miembro 2 VALUES (10,'maestro','roshi','came house','isla','23004180','roshi@dragon.c om'); 1 fila creada. Copias: SQL> INSERT INTO copia_titulo (no_copia,id_titulo,estado) 2 VALUES (1,1,'disponible'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (2,1,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (3,1,'disponible'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (4,2,'disponible'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (5,4,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (6,4,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (7,5,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (8,6,'disponible'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (9,6,'disponible');

1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (10,6,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (11,7,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (12,7,'disponible'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (13,8,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (14,9,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (15,9,'disponible'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (16,10,'destruida'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (17,11,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (18,11,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (19,1,'disponible'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (20,1,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (21,4,'rentado'); 1 fila creada.

SQL> INSERT INTO copia_titulo 2 VALUES (22,6,'rentado'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (23,3,'disponible'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (24,3,'destruida'); 1 fila creada. SQL> INSERT INTO copia_titulo 2 VALUES (25,3,'rentado'); 1 fila creada. Rentas: SQL> INSERT INTO renta(id_miembro,id_titulo,no_copia,f_renta,f_dev_deseada,f_dev _real) 2 VALUES (1,1,1,'07-01-98','11-01-98','10-01-98'); 1 fila creada. SQL> INSERT INTO renta(id_miembro,id_titulo,no_copia,f_renta,f_dev_deseada,f_dev _real) 2 VALUES (2,1,2,'21-03-98','25-03-98','26-03-98'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (4,2,4,'14-07-98','18-07-98','15-07-98'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (5,11,17,'23-08-98','27-08-98','26-08-98'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (7,8,13,'10-05-99','14-05-99','20-05-99'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (3,4,5,'06-09-99','10-09-99','12-09-99'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (10,3,25,'01-02-00','05-02-00','25-02-00'); 1 fila creada. SQL> INSERT INTO renta

2 VALUES (8,5,7,'08-03-00','12-03-00','11-03-00'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (9,10,16,'14-02-01','18-02-01','15-02-01'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (6,1,3,'21-01-02','25-01-02','26-01-02'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (2,9,14,'07-07-02','13-07-02','08-07-02'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (10,7,11,'23-11-02','27-11-02','02-12-02'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (3,3,23,'15-10-03','19-10-03','17-10-03'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (4,5,7,'12-06-04','16-06-04','16-06-04'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (5,1,20,'03-05-05','07-05-05','10-05-05'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (1,2,4,'30-08-05','03-09-05','01-09-05'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (2,1,19,'06-12-05','10-12-05','10-12-05'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (7,11,18,'05-04-06','09-04-06','08-04-06'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (6,5,7,'21-04-06','25-04-06','23-04-06'); 1 fila creada. SQL> INSERT INTO renta 2 VALUES (8,7,12,'31-03-07','04-04-07','15-04-07');

1 fila creada. Reservaciones: SQL> INSERT INTO reservacion(f_reservacion,id_titulo,id_miembro) 2 VALUES ('02-06-10',9,1); 1 fila creada. SQL> INSERT INTO reservacion 2 VALUES ('02-06-10',5,3); 1 fila creada. SQL> INSERT INTO reservacion 2 VALUES ('09-06-10',2,7); 1 fila creada. SQL> INSERT INTO reservacion 2 VALUES ('28-05-10',8,8); 1 fila creada. SQL> INSERT INTO reservacion 2 VALUES ('11-06-10',5,2); 1 fila creada. Ahora las consultas: //primeras 5, contar el numero de registros de cada tabla SQL> SELECT COUNT(*) 2 FROM titulo; COUNT(*) ---------11 SQL> SELECT COUNT(*) 2 FROM copia_titulo; COUNT(*) ---------25 SQL> SELECT COUNT(*) 2 FROM miembro; COUNT(*) ---------10 SQL> SELECT COUNT(*) 2 FROM renta; COUNT(*) ---------20

SQL> SELECT COUNT(*) 2 FROM reservacion; COUNT(*) ---------5 //6, numero de pelicuals rentadas actualmente SQL> SELECT COUNT(*) 2 FROM copia_titulo 3 WHERE estado='rentado'; COUNT(*) ---------14 //7, numero de peliculas que han sido destruidas SQL> SELECT COUNT(*) 2 FROM copia_titulo 3 WHERE estado='destruida'; COUNT(*) ---------2 //8,titulo y fecha de las peliculas rentadas despues del 2000 SQL> SELECT t.titulo, r.f_renta 2 FROM titulo t, renta r 3 WHERE (t.id_titulo=r.id_titulo)AND(f_renta>'01-01-00'); TITULO F_RENTA -------------------- -------La mascara 30/08/05 bob esponja 06/12/05 tiburones 07/07/02 Osos de la montaña 15/10/03 El gato 12/06/04 bob esponja 03/05/05 bob esponja 21/01/02 El gato 21/04/06 el gordo y el flaco 05/04/06 El gato 08/03/00 karate kid 31/03/07 TITULO F_RENTA -------------------- -------leberen a willi 14/02/01 Osos de la montaña 01/02/00 karate kid 23/11/02 14 filas seleccionadas. //9,titulo y fecha de las peliculas rentadas antes del 2000 SQL> SELECT t.titulo, r.f_renta 2 FROM titulo t, renta r 3 WHERE (t.id_titulo=r.id_titulo)AND(f_renta<'01-01-00');

TITULO F_RENTA -------------------- -------bob esponja 07/01/98 bob esponja 21/03/98 Rambo 06/09/99 La mascara 14/07/98 el gordo y el flaco 23/08/98 la vida es bella 10/05/99 6 filas seleccionadas. //10,titulo delas peliculas de accion SQL> SELECT titulo 2 FROM titulo 3 WHERE genero='accion'; TITULO -------------------Rambo Principe de persia karate kid //11,titulo y sinopsis delas peliculas de comedia SQL> SELECT titulo, sinopsis 2 FROM titulo 3 WHERE genero='comedia'; TITULO -------------------SINOPSIS -------------------------------------------------------------------------------La mascara stanli se encuentra una mascara que lo convierte en un ersonaje loco el gordo y el flaco una pareja comica que dirvierten a cualquiera //11,titulo y sinopsis de las peliculas infantiles SQL> SELECT titulo, sinopsis 2 FROM titulo 3 WHERE genero='infantil'; TITULO -------------------SINOPSIS -------------------------------------------------------------------------------bob esponja las aventura de bob esponja al tratar de recuperar la corona del rey neptuno El gato historia de un gato que ayuda a unos ninios a divertirse //12,numero de peliculas del genero documental SQL> SELECT COUNT(*)

2 FROM titulo 3 WHERE genero='documental'; COUNT(*) ---------2 //13,nomre miembro, titulo pelicula y fehca de renta de todas las rentas SQL> SELECT m.nombres, t.titulo, r.f_renta 2 FROM miembro m,titulo t,renta r 3 WHERE (m.id_miembro=r.id_miembro)AND(t.id_titulo=r.id_titulo); NOMBRES -------------------alan alan rocheli rocheli rocheli cristofer cristofer ruben ruben heber heber NOMBRES -------------------bob esponja bob esponja nayeli nayeli moe moe jhon maestro maestro TITULO F_RENTA -------------------- -------bob esponja 07/01/98 La mascara 30/08/05 bob esponja 21/03/98 bob esponja 06/12/05 tiburones 07/07/02 Osos de la montaña 15/10/03 Rambo 06/09/99 La mascara 14/07/98 El gato 12/06/04 bob esponja 03/05/05 el gordo y el flaco 23/08/98 TITULO F_RENTA -------------------- -------bob esponja 21/01/02 El gato 21/04/06 la vida es bella 10/05/99 el gordo y el flaco 05/04/06 El gato 08/03/00 karate kid 31/03/07 leberen a willi 14/02/01 Osos de la montaña 01/02/00 karate kid 23/11/02

20 filas seleccionadas. //14,consulta igual a la anterior ordenados por titulo SQL> SELECT m.nombres, t.titulo, r.f_renta 2 FROM miembro m,titulo t,renta r 3 WHERE (m.id_miembro=r.id_miembro)AND(t.id_titulo=r.id_titulo) 4 ORDER BY t.titulo; NOMBRES -------------------bob esponja heber rocheli rocheli alan bob esponja moe ruben heber nayeli maestro TITULO F_RENTA -------------------- -------bob esponja 21/01/02 bob esponja 03/05/05 bob esponja 21/03/98 bob esponja 06/12/05 bob esponja 07/01/98 El gato 21/04/06 El gato 08/03/00 El gato 12/06/04 el gordo y el flaco 23/08/98 el gordo y el flaco 05/04/06 karate kid 23/11/02

NOMBRES -------------------moe ruben alan nayeli jhon cristofer maestro cristofer rocheli

TITULO F_RENTA -------------------- -------karate kid 31/03/07 La mascara 14/07/98 La mascara 30/08/05 la vida es bella 10/05/99 leberen a willi 14/02/01 Osos de la montaña 15/10/03 Osos de la montaña 01/02/00 Rambo 06/09/99 tiburones 07/07/02

20 filas seleccionadas. //15,nombre miembro, titulo pelicula, fecha de renta, fecha dev deseada y fecha de devolucion real de las rentas que fueron entregadas tarde SQL> SELECT m.nombres, t.titulo, r.f_renta, r.f_dev_deseada, r.f_dev_real 2 FROM miembro m,titulo t,renta r 3 WHERE (m.id_miembro=r.id_miembro)AND(t.id_titulo=r.id_titulo) 4 AND(f_dev_real>f_dev_deseada); NOMBRES -------------------rocheli nayeli cristofer maestro bob esponja maestro heber moe TITULO F_RENTA F_DEV_DE F_DEV_RE -------------------- -------- -------- -------bob esponja 21/03/98 25/03/98 26/03/98 la vida es bella 10/05/99 14/05/99 20/05/99 Rambo 06/09/99 10/09/99 12/09/99 Osos de la montaña 01/02/00 05/02/00 25/02/00 bob esponja 21/01/02 25/01/02 26/01/02 karate kid 23/11/02 27/11/02 02/12/02 bob esponja 03/05/05 07/05/05 10/05/05 karate kid 31/03/07 04/04/07 15/04/07

8 filas seleccionadas. //16,nuevas peliculas han llegado, añadirlas a la base de datos es tarea del administrador. SQL> INSERT INTO titulo 2 VALUES (12,'tesis','una chica investiga la desaparicion de otras estudiante s y la supuesta relacion con peliculas snuff','drama','cn17','20-05-89'); VALUES (12,'tesis','una chica investiga la desaparicion de otras estudiantes y l a supuesta relacion con peliculas snuff','drama','cn17','20-05-89') * ERROR en lÝnea 2: ORA-12899: el valor es demasiado grande para la columna "CHRISTIAN"."TITULO"."SINOPSIS" (real: 99, mßximo: 80) //un error de espacio insuficiente, hay que actualizar la tabla y añadir mas espacio a la columna de sinopsis SQL> ALTER TABLE titulo modify sinopsis varchar2(120); Tabla modificada. //17,añadir pelicula tesis SQL> INSERT INTO titulo(id_titulo,titulo,sinopsis,genero,rating,f_estreno) 2 VALUES (12,'tesis','una chica investiga la desaparicion de otras estudiante s y su supuesta relacion con peliculas snuff','drama','nc17','20-06-96'); 1 fila creada.

//18,revisando los registros hay un error en el titulo de la pelicula liberen a willi, hay que cambiar leberen por liberen SQL> UPDATE titulo 2 SET titulo='Liberen a willi' 3 WHERE id_titulo=(SELECT id_titulo FROM titulo WHERE titulo LIKE '%willi'); 1 fila actualizada. //19,otra pelicula que llega al videoclub SQL> INSERT INTO titulo 2 VALUES (13,'toy story 3','tercera parte de la historia de los juguetes de a ndy','infantil','g','18-06-10'); 1 fila creada. //20,un miembro a preguntado por una pelicula que no encuentra, pero no recuerda bien como se llama, dice que empieza con rata y es del genero infantil (ratatui) SQL> SELECT * 2 FROM titulo 3 WHERE (genero='infantil')AND(titulo LIKE 'rata%'); ninguna fila seleccionada //21,nuevos miembros se han unido al club, se añaden a la base de datos SQL> INSERT INTO miembro 2 VALUES (11,'andres alejandro','maya segura','sin nombre','la aldea','458912 36','elmaya@losmayas.com'); 1 fila creada. //22,un vistazo a la nueva tabla de peliculas SQL> SELECT * 2 FROM titulo; ID_TITULO TITULO ---------- -------------------SINOPSIS -------------------------------------------------------------------------------GENERO RATI F_ESTREN -------------------- ---- -------12 tesis una chica investiga la desaparicion de otras estudiantes y su supuesta relacion con peliculas snuff drama nc17 20/06/96 13 toy story 3 tercera parte de la historia de los juguetes de andy ID_TITULO TITULO ---------- -------------------SINOPSIS -------------------------------------------------------------------------------GENERO RATI F_ESTREN

-------------------- ---- -------infantil g 18/06/10 1 bob esponja las aventura de bob esponja al tratar de recuperar la corona del rey neptuno infantil r 14/02/08 2 La mascara ID_TITULO TITULO ---------- -------------------SINOPSIS -------------------------------------------------------------------------------GENERO RATI F_ESTREN -------------------- ---- -------stanli se encuentra una mascara que lo convierte en un ersonaje loco comedia g 22/07/98 3 Osos de la montaña un documental de la vida de los osos documental pg 25/03/01 ID_TITULO TITULO ---------- -------------------SINOPSIS -------------------------------------------------------------------------------GENERO RATI F_ESTREN -------------------- ---- -------4 Rambo Morir por algo, vivir por nada accion r 25/12/92 5 El gato historia de un gato que ayuda a unos ninios a divertirse infantil r 17/08/05 ID_TITULO TITULO ---------- -------------------SINOPSIS -------------------------------------------------------------------------------GENERO RATI F_ESTREN -------------------- ---- -------6 Principe de persia Basada en el videojuego narra las aventuras del principe y la daga del tiempo accion pg 28/05/10 7 karate kid la historia de como un chico aprende artes marciales del maestro miyagui ID_TITULO TITULO ---------- -------------------SINOPSIS -------------------------------------------------------------------------------GENERO RATI F_ESTREN -------------------- ---- --------

accion

r

18/06/85

8 la vida es bella el sacrificio de un padre para salvar a su hijo de los horrores de la guerra drama nc17 15/04/99 9 tiburones ID_TITULO TITULO ---------- -------------------SINOPSIS -------------------------------------------------------------------------------GENERO RATI F_ESTREN -------------------- ---- -------un documental sobre el comportamiento de los tiburones en el mar azul documental nr 12/12/97 10 Liberen a willi historia de un ninio que se roba una ballena drama pg 22/08/88 ID_TITULO TITULO ---------- -------------------SINOPSIS -------------------------------------------------------------------------------GENERO RATI F_ESTREN -------------------- ---- -------11 el gordo y el flaco una pareja comica que dirvierten a cualquiera comedia g 01/05/00 13 filas seleccionadas. //23,para evitar que la consulta sea tan complicada se crea una vista de rentas que incluya nombre del miembro titulo de pelicula y fechas SQL> CREATE VIEW rentas_texto 2 AS SELECT m.nombres, t.titulo, r.f_renta, r.f_dev_deseada, r.f_dev_real 3 FROM miembro m,titulo t,renta r 4 WHERE (m.id_miembro=r.id_miembro)AND(t.id_titulo=r.id_titulo); Vista creada. //24,aprovechamos la nueva vista para hacer nuevas consultas. rentas que fueron realizadas en los meses de enero o febrero SQL> SELECT * 2 FROM rentas_texto 3 WHERE (f_renta LIKE '___01___')OR(f_renta LIKE '___02___'); NOMBRES TITULO F_RENTA F_DEV_DE F_DEV_RE -------------------- -------------------- -------- -------- -------alan bob esponja 07/01/98 11/01/98 10/01/98 maestro Osos de la montaña 01/02/00 05/02/00 25/02/00 jhon Liberen a willi 14/02/01 18/02/01 15/02/01 bob esponja bob esponja 21/01/02 25/01/02 26/01/02

//25,cuales fueron las peliculas que fueron rentadas en las vacaciones de verano, es decir en los meses julio y agosto SQL> SELECT * 2 FROM rentas_texto 3 WHERE (f_renta LIKE '___07___')OR(f_renta LIKE '___08___'); NOMBRES -------------------ruben heber rocheli alan TITULO F_RENTA F_DEV_DE F_DEV_RE -------------------- -------- -------- -------La mascara 14/07/98 18/07/98 15/07/98 el gordo y el flaco 23/08/98 27/08/98 26/08/98 tiburones 07/07/02 13/07/02 08/07/02 La mascara 30/08/05 03/09/05 01/09/05

//26, deseo conocer el historial de rentas de el miembro mas antiguo del club. SQL> SELECT * 2 FROM rentas_texto 3 WHERE nombres=(SELECT nombres FROM miembro WHERE id_miembro=1); NOMBRES TITULO F_RENTA F_DEV_DE F_DEV_RE -------------------- -------------------- -------- -------- -------alan bob esponja 07/01/98 11/01/98 10/01/98 alan La mascara 30/08/05 03/09/05 01/09/05 //27, conocer cual es el miemrbo mas reciente del club SQL> SELECT nombres 2 FROM miembro 3 WHERE id_miembro=(SELECT MAX(id_miembro) FROM miembro); NOMBRES -------------------andres alejandro //28,en que fechas fueron rentadas las peliculas "la mascara", "el gato" y "karate kid" SQL> SELECT titulo, f_renta 2 FROM rentas_texto 3 WHERE titulo IN('La mascara','El gato','karate kid'); TITULO -------------------La mascara La mascara El gato El gato El gato karate kid karate kid F_RENTA -------30/08/05 14/07/98 12/06/04 21/04/06 08/03/00 31/03/07 23/11/02

7 filas seleccionadas. //29, hay rumores de que se rentaron peliculas antes de que estuvieran disponibles para ello, una consulta a las rentas y titulos resolvera la duda. SQL> SELECT t.titulo, t.f_estreno, r.f_renta 2 FROM titulo t, renta r 3 WHERE (t.id_titulo=r.id_titulo)AND(f_renta<f_estreno); TITULO F_ESTREN F_RENTA

-------------------- -------- -------bob esponja 14/02/08 07/01/98 bob esponja 14/02/08 21/03/98 bob esponja 14/02/08 06/12/05 La mascara 22/07/98 14/07/98 El gato 17/08/05 12/06/04 bob esponja 14/02/08 03/05/05 el gordo y el flaco 01/05/00 23/08/98 bob esponja 14/02/08 21/01/02 El gato 17/08/05 08/03/00 Osos de la montaña 25/03/01 01/02/00 10 filas seleccionadas. //30, al igual que con la tabla rentas, a la tabla de copias se le creara una vista para hacer mas sencillas las consultas SQL> CREATE VIEW copias_texto 2 AS SELECT t.id_titulo, t.titulo, c.no_copia, c.estado 3 FROM titulo t, copia_titulo c 4 WHERE t.id_titulo=c.id_titulo; Vista creada. //31 una consulta rapida sobre la nueva vista SQL> SELECT * 2 FROM copias_texto; ID_TITULO TITULO NO_COPIA ESTADO ---------- -------------------- ---------- -----------1 bob esponja 1 disponible 1 bob esponja 2 rentado 1 bob esponja 3 disponible 2 La mascara 4 disponible 4 Rambo 5 rentado 4 Rambo 6 rentado 5 El gato 7 rentado 6 Principe de persia 8 disponible 6 Principe de persia 9 disponible 6 Principe de persia 10 rentado 7 karate kid 11 rentado ID_TITULO TITULO NO_COPIA ESTADO ---------- -------------------- ---------- -----------7 karate kid 12 disponible 8 la vida es bella 13 rentado 9 tiburones 14 rentado 9 tiburones 15 disponible 10 Liberen a willi 16 destruida 11 el gordo y el flaco 17 rentado 11 el gordo y el flaco 18 rentado 1 bob esponja 19 disponible 1 bob esponja 20 rentado 4 Rambo 21 rentado 6 Principe de persia 22 rentado ID_TITULO TITULO NO_COPIA ESTADO ---------- -------------------- ---------- -----------3 Osos de la montaña 23 disponible 3 Osos de la montaña 24 destruida

3 Osos de la montaña 25 filas seleccionadas.

25 rentado

//32 tambien se crea una vista sobre la tabla de reservaciones SQL> CREATE VIEW reservacion_texto 2 AS SELECT res.f_reservacion, t.titulo, m.nombres 3 FROM titulo t, reservacion res, miembro m 4 WHERE (t.id_titulo=res.id_titulo)AND(m.id_miembro=res.id_miembro); Vista creada. //33, una consulta rapida soble la nueva vista SQL> SELECT * 2 FROM reservacion_texto; F_RESERV TITULO NOMBRES -------- -------------------- -------------------28/05/10 la vida es bella moe 02/06/10 El gato cristofer 02/06/10 tiburones alan 09/06/10 La mascara nayeli 11/06/10 El gato rocheli //34, al parecer actualmente hay copias disponibles para algunas de las peliculas reservadas, hay que hacer una comparacion de las vistas SQL> SELECT rest.titulo, rest.nombres, ct.estado 2 FROM reservacion_texto rest, copias_texto ct 3 WHERE (rest.titulo=ct.titulo)AND(estado='disponible'); TITULO NOMBRES ESTADO -------------------- -------------------- -----------La mascara nayeli disponible tiburones alan disponible //35 debido al resultado anterior hay que informar a los miembros interesados de que sus reservaciones estan disponibles, se consultan sus datos de contacto SQL> SELECT nombres, no_tel, email 2 FROM miembro 3 WHERE nombres IN('nayeli','alan'); NOMBRES NO_TEL EMAIL -------------------- ---------- ------------------------alan 22288675 sky_noah@hotmail.com nayeli 12564482 ncgyo@hotmail.com //36,han devuelto varias peliculas, se cambiara el estado de las copias a disponible SQL> UPDATE copia_titulo 2 SET estado='disponible' 3 WHERE no_copia IN(5,6,11,13,18,20,21,22); 8 filas actualizadas. //37,un par de peliculas que regresaron estaban en mal estado, asi que deberán ser destruidas SQL> UPDATE copia_titulo

2 SET estado='destruida' 3 WHERE no_copia=2 OR no_copia=18; 2 filas actualizadas. //38,los miembros alan y nayeli han respondido a el correo que se les envio, nayeli ah decidido venir a rentar la pelicula y alan ya no le interesa. SQL> DELETE FROM reservacion 2 WHERE id_miembro=(SELECT id_miembro FROM miembro 3 WHERE nombres='alan'); 1 fila suprimida. SQL> DELETE FROM reservacion 2 WHERE id_miembro=(SELECT id_miembro FROM miembro 3 WHERE nombres='nayeli'); 1 fila suprimida. //39, nayeli a rentado la pelicula de la mascara SQL> INSERT INTO renta(id_miembro,id_titulo,no_copia,f_renta,f_dev_deseada,f_dev_real) 2 VALUES(7,2,4,SYSDATE,SYSDATE+5,NULL); 1 fila creada. //40,tambien hay que actualizar la tabla de copias SQL> UPDATE copia_titulo 2 SET estado='rentado' 3 WHERE no_copia=4; 1 fila actualizada.