PLSQL




                Integrantes: Febe Moena
                             Elizabeth Morales
                             Andrea Uribe
                Profesor:    Cristian Salazar
                Ayudante: José Luis Carrasco
                Curso:       ADMI 273




Valdivia 30 de Abril, 2012
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)
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
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;
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
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;
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
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)

Plsql

  • 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 basede 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 cantidadde 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 requiereobtener 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 sedebe 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_campusand 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 solicitaobtener 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 numerode 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)