Post on 19-Jun-2015
description
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 corona 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 ersonaje 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','infantil','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 principe 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 marciales 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 hijo 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 tiburones 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 cualquiera','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_noah@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','ireliugs@hotmail.com');
1 fila creada.
SQL> INSERT INTO miembro 2 VALUES (6,'bob esponja','pantalones cuadrados','calle calamardo','fondo debikini','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','moesislac@sims');
1 fila creada.
SQL> INSERT INTO miembro 2 VALUES (9,'jhon','bonachon','calle garfield','gato','36695210','jhon_g@gmail.com');
1 fila creada.
SQL> INSERT INTO miembro 2 VALUES (10,'maestro','roshi','came house','isla','23004180','roshi@dragon.com');
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/05bob esponja 06/12/05tiburones 07/07/02Osos de la montaña 15/10/03El gato 12/06/04bob esponja 03/05/05bob esponja 21/01/02El gato 21/04/06el gordo y el flaco 05/04/06El gato 08/03/00karate kid 31/03/07
TITULO F_RENTA-------------------- --------leberen a willi 14/02/01Osos de la montaña 01/02/00karate 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/98bob esponja 21/03/98Rambo 06/09/99La mascara 14/07/98el gordo y el flaco 23/08/98la 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--------------------RamboPrincipe de persiakarate kid
//11,titulo y sinopsis delas peliculas de comedia
SQL> SELECT titulo, sinopsis 2 FROM titulo 3 WHERE genero='comedia';
TITULO--------------------SINOPSIS--------------------------------------------------------------------------------
La mascarastanli se encuentra una mascara que lo convierte en un ersonaje loco
el gordo y el flacouna 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 esponjalas aventura de bob esponja al tratar de recuperar la corona del rey neptuno
El gatohistoria 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 TITULO F_RENTA-------------------- -------------------- --------alan bob esponja 07/01/98alan La mascara 30/08/05rocheli bob esponja 21/03/98rocheli bob esponja 06/12/05rocheli tiburones 07/07/02cristofer Osos de la montaña 15/10/03cristofer Rambo 06/09/99ruben La mascara 14/07/98ruben El gato 12/06/04heber bob esponja 03/05/05heber el gordo y el flaco 23/08/98
NOMBRES TITULO F_RENTA-------------------- -------------------- --------bob esponja bob esponja 21/01/02bob esponja El gato 21/04/06nayeli la vida es bella 10/05/99nayeli el gordo y el flaco 05/04/06moe El gato 08/03/00moe karate kid 31/03/07jhon leberen a willi 14/02/01maestro Osos de la montaña 01/02/00maestro 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 TITULO F_RENTA-------------------- -------------------- --------bob esponja bob esponja 21/01/02heber bob esponja 03/05/05rocheli bob esponja 21/03/98rocheli bob esponja 06/12/05alan bob esponja 07/01/98bob esponja El gato 21/04/06moe El gato 08/03/00
ruben El gato 12/06/04heber el gordo y el flaco 23/08/98nayeli el gordo y el flaco 05/04/06maestro karate kid 23/11/02
NOMBRES TITULO F_RENTA-------------------- -------------------- --------moe karate kid 31/03/07ruben La mascara 14/07/98alan La mascara 30/08/05nayeli la vida es bella 10/05/99jhon leberen a willi 14/02/01cristofer Osos de la montaña 15/10/03maestro Osos de la montaña 01/02/00cristofer Rambo 06/09/99rocheli 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 TITULO F_RENTA F_DEV_DE F_DEV_RE-------------------- -------------------- -------- -------- --------rocheli bob esponja 21/03/98 25/03/98 26/03/98nayeli la vida es bella 10/05/99 14/05/99 20/05/99cristofer Rambo 06/09/99 10/09/99 12/09/99maestro Osos de la montaña 01/02/00 05/02/00 25/02/00bob esponja bob esponja 21/01/02 25/01/02 26/01/02maestro karate kid 23/11/02 27/11/02 02/12/02heber bob esponja 03/05/05 07/05/05 10/05/05moe 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 estudiantes y la supuesta relacion con peliculas snuff','drama','cn17','20-05-89');VALUES (12,'tesis','una chica investiga la desaparicion de otras estudiantes y la 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 estudiantes 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 andy','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','45891236','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 tesisuna chica investiga la desaparicion de otras estudiantes y su supuesta relacioncon peliculas snuffdrama nc17 20/06/96
13 toy story 3tercera parte de la historia de los juguetes de andy
ID_TITULO TITULO
---------- --------------------SINOPSIS--------------------------------------------------------------------------------
GENERO RATI F_ESTREN-------------------- ---- --------infantil g 18/06/10
1 bob esponjalas aventura de bob esponja al tratar de recuperar la corona del rey neptunoinfantil 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 lococomedia g 22/07/98
3 Osos de la montañaun documental de la vida de los ososdocumental pg 25/03/01
ID_TITULO TITULO---------- --------------------SINOPSIS--------------------------------------------------------------------------------
GENERO RATI F_ESTREN-------------------- ---- -------- 4 RamboMorir por algo, vivir por nadaaccion r 25/12/92
5 El gatohistoria de un gato que ayuda a unos ninios a divertirseinfantil r 17/08/05
ID_TITULO TITULO---------- --------------------SINOPSIS--------------------------------------------------------------------------------
GENERO RATI F_ESTREN-------------------- ---- --------
6 Principe de persiaBasada en el videojuego narra las aventuras del principe y la daga del tiempoaccion pg 28/05/10
7 karate kidla 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 bellael sacrificio de un padre para salvar a su hijo de los horrores de la guerradrama 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 azuldocumental nr 12/12/97
10 Liberen a willihistoria de un ninio que se roba una ballenadrama pg 22/08/88
ID_TITULO TITULO---------- --------------------SINOPSIS--------------------------------------------------------------------------------
GENERO RATI F_ESTREN-------------------- ---- -------- 11 el gordo y el flacouna pareja comica que dirvierten a cualquieracomedia 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/98maestro Osos de la montaña 01/02/00 05/02/00 25/02/00jhon Liberen a willi 14/02/01 18/02/01 15/02/01bob 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 TITULO F_RENTA F_DEV_DE F_DEV_RE-------------------- -------------------- -------- -------- --------ruben La mascara 14/07/98 18/07/98 15/07/98heber el gordo y el flaco 23/08/98 27/08/98 26/08/98rocheli tiburones 07/07/02 13/07/02 08/07/02alan 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/98alan 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 F_RENTA-------------------- --------La mascara 30/08/05La mascara 14/07/98El gato 12/06/04El gato 21/04/06El gato 08/03/00karate kid 31/03/07karate kid 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/98bob esponja 14/02/08 21/03/98bob esponja 14/02/08 06/12/05La mascara 22/07/98 14/07/98El gato 17/08/05 12/06/04bob esponja 14/02/08 03/05/05el gordo y el flaco 01/05/00 23/08/98bob esponja 14/02/08 21/01/02El gato 17/08/05 08/03/00Osos 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 rentado
25 filas seleccionadas.
//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 moe02/06/10 El gato cristofer02/06/10 tiburones alan09/06/10 La mascara nayeli11/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 disponibletiburones 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.comnayeli 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.