reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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

Upload: christian-soto

Post on 19-Jun-2015

819 views

Category:

Documents


1 download

DESCRIPTION

se diseño una base de datos de un video club en el sistema E-R, se crearon las tablas, se insertaron registros y se hicieron 40 consultas que le sirven a un administrador

TRANSCRIPT

Page 1: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

UAM

Introducción al Diseño de Bases de Datos

Soto Hernández Christian

205318638

20-Junio-10

Práctica 2

VIDEO CLUB

Page 2: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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,

Page 3: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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

Page 4: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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','[email protected]');

1 fila creada.

SQL> INSERT INTO miembro 2 VALUES (2,'rocheli','flores mendez','calle naranjos','ixtapaluca','17098426','[email protected]');

1 fila creada.

SQL> INSERT INTO miembro 2 VALUES (3,'cristofer','guacamayo','avenida 4','col neza','48561289','[email protected]');

1 fila creada.

SQL> INSERT INTO miembro 2 VALUES (4,'ruben','flores cruz','ave maria','taxquenia','54285569','[email protected]');

1 fila creada.

SQL> INSERT INTO miembro 2 VALUES (5,'heber','morales','calle panteon','los muertos','45128896','[email protected]');

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','[email protected]');

Page 5: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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','[email protected]');

1 fila creada.

SQL> INSERT INTO miembro 2 VALUES (10,'maestro','roshi','came house','isla','23004180','[email protected]');

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.

Page 6: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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.

Page 7: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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');

Page 8: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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');

Page 9: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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;

Page 10: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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

Page 11: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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

Page 12: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

//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

Page 13: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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

Page 14: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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','[email protected]');

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

Page 15: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

---------- --------------------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---------- --------------------

Page 16: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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-------------------- -------------------- -------- -------- --------

Page 17: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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.

Page 18: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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

Page 19: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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 [email protected] 12564482 [email protected]

//36,han devuelto varias peliculas, se cambiara el estado de las copias a disponible

SQL> UPDATE copia_titulo 2 SET estado='disponible'

Page 20: reporte practica 2, implementacion de bade de datos de un video club en oracle 10g

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.