1. PLSQL
Integrantes: Febe Moena
Elizabeth Morales
Andrea Uribe
Profesor: Cristian Salazar
Ayudante: José Luis Carrasco
Curso: ADMI 273
Valdivia 30 de Abril, 2012
2. Supuestos: La base de datos no guarda el histórico de los préstamos realizados, es decir, que
al entregar un libro, ese préstamo se elimina de la tabla PRESTAMO.
1.- Realice las siguientes vistas:
a) Que entregue los estudiantes que son de Ing. Comercial (NOMBRES y APELLIDOS del
estudiante, NOMBRE de la carrera y NOMBRE del campus).
Select e.nombres, apellidos,c.nombre CARRERA, cs.nombre CAMPUS
from estudiantes e, carreras c, campus cs
where e.id_carrera=c.id_carrera and
c.id_campus=cs.id_campus and
c.nombre='Comercial'
b) Que entregue los estudiantes que son de Auditoria (NOMBRES y APELLIDOS del
estudiante, NOMBRE de la carrera y NOMBRE del campus).
Select e.nombres, apellidos,c.nombre CARRERA, cs.nombre CAMPUS
from estudiantes e, carreras c, campus cs
where e.id_carrera=c.id_carrera and
c.id_campus=cs.id_campus and
c.nombre='Auditoria'
c) Que entregue los estudiantes que se atrasaron en la entrega de los libros (RUT,
NOMBRES, APELLIDOS y FONO).
Select e.rut_est RUT, nombres, apellidos, fono
from estudiantes e, prestamo p
where e.rut_est=p.rut_est and
fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual)
3. d) La cantidad de libros prestados.
Select count(cod_libro) LIBROS_PRESTADOS
from préstamo
e) Los libros de editoriales extranjeras (CODIGO,TITULO , AÑO y PAIS de ORIGEN).
Select l.cod_libro, l.titulo, l.agno AÑO, e.pais
from editoriales e, libros l
where e.id_edit=l.id_edit
and e.pais<> 'Chile'
f) Los libros que son de reserva (CODIGO, TITULO y AÑO del LIBRO, NOMBRE de la
biblioteca, el NOMBRE y APELLIDO del autor, el NOMBRE de la editorial y el PAIS).
Select cod_libro,titulo, agno AÑO, biblioteca, a.nombres NOMBRES_AUTOR, a.apellidos
APELLIDOS_AUTOR, e.nombre NOMBRE_EDITORIAL, pais
from libros l, biblioteca b, autores a,editoriales e
where b.id_biblio=l.id_biblio and
a.rut_autor=l.rut_autor and
l.id_edit=e.id_edit and
id_tipo=1
4. 2.- Se requiere obtener datos desde la Base de Datos y almacenarlos de forma
permanente (Vista). Se solicita:
a) Los estudiantes del campus Isla Teja, que tienen libros en su poder (atrasados o no).
create or replace view dosa as
Select e.nombres, e.apellidos
from estudiantes e, carreras c, prestamo p
where e.id_carrera=c.id_carrera and
e.rut_est=p.rut_est and
id_campus= 3 and
fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);
Select *
from dosa;
b) Se debe entregar el RUT, NOMBRE y APELLIDOS del estudiante, además del
NOMBRE de la carrera a la cual pertenece.
create or replace view dosB as
Select e.rut_est, e.nombres NOMBRES, e.apellidos APELLIDOS, c.nombre CARRERA
from estudiantes e, carreras c, prestamo p
where e.id_carrera=c.id_carrera and
e.rut_est=p.rut_est and
id_campus= 2 and
fecha_e > (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);
Select *
from dosB;
5. c) Además se debe entregar que libro tiene prestado, indicando CODIGO, TITULO y AÑO,
el NOMBRE y APELLIDO del autor, la EDITORIAL y su PAIS, indicar en qué biblioteca
se encuentra, y de qué tipo es.
create or replace view dosc as
Select l.cod_libro,l.titulo, l.agno AÑO,a.nombres,a.apellidos, ed.nombre EDITORIAL,
ed.pais PAIS,b.biblioteca BIBLIOTECA, tipo_p TIPO
from libros l, editoriales ed, tipo t,biblioteca b, autores a,prestamo p,estudiantes e,
carreras c, campus cs
where p.cod_libro=l.cod_libro and
l.rut_autor=a.rut_autor and
ed.id_edit=l.id_edit and
b.id_biblio=l.id_biblio and
t.id_tipo=l.id_tipo and
e.id_carrera=c.id_carrera and
e.rut_est=p.rut_est and
cs.id_campus=c.id_campus and
cs.id_campus= 2 and
fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);
Select *
from dosc;
d) Se debe indicar que funcionario realizo la transacción, con RUT, NOMBRE y
APELLIDO.
create or replace view dosd as
Select f.rut_func RUT_FUNCIONARIO, f.nombres NOMBRE_FUNCIONARIO,
f.apellidos APELLIDO_FUNCIONARIO
from libros l, editoriales ed, tipo t,biblioteca b, autores a,prestamo p,estudiantes e,
carreras c, campus cs, funcionarios f
where p.cod_libro=l.cod_libro and
l.rut_autor=a.rut_autor and
ed.id_edit=l.id_edit and
b.id_biblio=l.id_biblio and
t.id_tipo=l.id_tipo and
e.id_carrera=c.id_carrera and
e.rut_est=p.rut_est and
6. cs.id_campus=c.id_campus and
cs.id_campus=f.id_campus and
p.rut_func=f.rut_func and
c.id_campus= 2 and
fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);
Select *
from dosd;
e) Además deberá indicarse la FECHA de PRESTAMO y la FECHA de ENTREGA de
éste.
create or replace view dose as
Select p.fecha_p FECHA_PRESTAMO, p.fecha_e FECHA_ENTREGA
from libros l, editoriales ed, tipo t,biblioteca b, autores a,prestamo p,estudiantes e, carreras
c, campus cs, funcionarios f
where p.cod_libro=l.cod_libro and
l.rut_autor=a.rut_autor and
ed.id_edit=l.id_edit and
b.id_biblio=l.id_biblio and
t.id_tipo=l.id_tipo and
e.id_carrera=c.id_carrera and
e.rut_est=p.rut_est and
cs.id_campus=c.id_campus and
cs.id_campus=f.id_campus and
p.rut_func=f.rut_func and
c.id_campus= 2 and
fecha_e < (select to_char(sysdate ,'dd/mm/yyyy' ) from dual);
Select *
from dose;
7. 3.- Se solicita obtener lo siguiente (consultas):
a) El numero de Estudiantes por Carrera.
Select c.nombre CARRERA, count(e.rut_est) NUMERO_ESTUDIANTES
from carreras c, estudiantes e
where c.id_carrera=e.id_carrera
group by c.nombre
b) El numero de Estudiantes por Campus
Select cs.nombre campus, count(e.rut_est) NUMERO_ESTUDIANTES
from carreras c, estudiantes e,campus cs
where c.id_carrera=e.id_carrera and
cs.id_campus=c.id_campus
group by cs.nombre
c) El numero de Estudiantes por Ciudad
Select cc.nombre CIUDAD, count(e.rut_est) NUMERO_ESTUDIANTES
from carreras c, estudiantes e, campus cs, ciudad cc
where c.id_carrera=e.id_carrera and
cs.id_campus=c.id_campus and
cc.id_ciudad=cs.id_ciudad
group by cc.nombre
8. d) El numero de Préstamos atrasados
Select count(p.fecha_e) PRESTAMOS_ATRASADOS
from prestamo p
e) El número de Prestamos Activos, No atrasados.
Select count(p.cod_libro) PRESTAMOS_ACTIVOS
from prestamo p
where p.fecha_e > (select to_char(sysdate, 'dd/mm/yyyy') from dual)