Este documento describe un taller sobre vistas en PL/SQL. Incluye ejemplos de consultas SQL y la creación de vistas para obtener datos de una base de datos de una universidad. Algunas vistas muestran datos de estudiantes, libros prestados, y la relación entre estudiantes, libros y funcionarios. Otras vistas cuentan el número de estudiantes por carrera, campus, ciudad y el número de préstamos atrasados y activos.
1. UNIVERSIDAD AUSTRAL DE CHILE
FACULTAD DE CIENCIAS ECONÓMICAS Y ADMINISTRATIVAS
AUDITORÍA
“Taller de Vistas en PLSQL”
Integrantes:
Suyahai Calfueque Soto
Alejandra Winter Ojeda
Asignatura:
Sistemas de Información
Administrativos
Profesor:
Cristian Salazar
Ayudante:
José Luis Carrasco
Valdivia, 19 de Noviembre de 2012
2. 1. Que entregue los estudiantes que son de Ing. Comercial (NOMBRES y
APELLIDOS del estudiante, NOMBRE de la carrera y NOMBRE del campus).
selecte.NOMBRES, e.APELLIDOS, c.NOMBRE, c.ID_CAMPUS
from CARRERAS c, ESTUDIANTES e
wheree.ID_CARRERA = c.ID_CARRERA
andc.ID_CARRERA = 2
2. Que entregue los estudiantes que son de Auditoria (NOMBRES y APELLIDOS del
estudiante, NOMBRE de la carrera y NOMBRE del campus).
selecte.NOMBRES, e.APELLIDOS, c.NOMBRE, c.ID_CAMPUS
from CARRERAS c, ESTUDIANTES e
wheree.ID_CARRERA = c.ID_CARRERA
andc.ID_CARRERA = 1
3. Que entregue los estudiantes que se atrasaron en la entrega de los libros (RUT,
NOMBRES, APELLIDOS y FONO).
selecte.NOMBRES, e.APELLIDOS, P.Rut_Est, e.FONO
from PRESTAMO P, ESTUDIANTES e
where P.RUT_EST = e.RUT_EST
andP.Fecha_e>P.Fecha_p
4. La cantidad de libros prestados.
selectcount(*)
from PRESTAMO
5. Los libros de editoriales extranjeras (CODIGO, TITULO , AÑO y PAIS de
ORIGEN).
selectl.COD_LIBRO, l.TITULO, l.AGNOAS AÑO, ed.ID_EDIT, ed.PAIS
from LIBROS l, EDITORIALES ed
whereed.id_edit = l.id_edit
anded.PAIS<>'CHILE'
3. 6. 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 ).
selectl.COD_LIBRO, l.TITULO, l.AGNOAS AÑO, b.BIBLIOTECA,
au.NOMBRES, au.APELLIDOS, ed.NOMBRE, ed.PAIS
from BIBLIOTECA b, EDITORIALES ed, AUTORES au, LIBROS l, TIPO t
wheret.TIPO_P = 'RESERVA'
2.-Se requiere obtener datos desde la Base de Datos y almacenarlos de forma permanente
(Vista). Se solicita:
Los estudiantes del campus Isla Teja, que tienen libros en su poder
(atrasados o no).
CREATEVIEWdata_estudiantes
AS
(
selecte.rut_est, e.nombres as est, e.apellidos as est_2, e.fono as fon_est, p.fecha_e
fromestudiantes e, prestamo p
wheree.rut_est=p.rut_est and p.fecha_e<sysdate
Se debe entregar el RUT, NOMBRE y APELLIDOS del estudiante, además
del NOMBRE de la carrera a la cual pertenece.
CREATEVIEWLIST_EST_C.TEJA
AS
(
SELECTe.NOMBRES, e.APELLIDOS, p.RUT_EST, c.NOMBRE
FROM ESTUDIANTES e, PRESTAMO p, CAMPUS c
WHEREp.Rut_Est = e.RUT_EST
AND C.NOMBRE = 'ISLA TEJA')
Para ver consulta ejecutar comando
select *
from EST_TEJA_CLIBROS
4. 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.
CREATEVIEW EST_TEJA_CLIBROS
AS
(
Select
E.RUT_EST,E.NOMBRES,E.APELLIDOS,C.NOMBRE,L.COD_LIBRO,L.TITUL
O,L.AGNO,A.NOMBRES,A.APELLIDOS,ED.NOMBRE,ED.PAIS,B.BIBLIOTE
CA,T.TIPO_P
from ESTUDIANTES E, CARRERAS C,LIBROS L,AUTORES A,EDITORIALES
ED,BIBLIOTECA B,TIPO T)
Se debe indicar que funcionario realizo la transacción, con RUT, NOMBRE
y APELLIDO.
CREATEVIEWdata_relacion_func_prestamo
AS
(
selecte.rut_est, e.nombres as estudiante, e.apellidos, c.nombre as carrera,
l.cod_libro, l.titulo, l.agno, a.nombres as autor, a.apellidos as ape_autor, ed.nombre
as edit, ed.pais, b.biblioteca, t.tipo_p, f.rut_func, f.nombres as funcionario,
f.apellidos as ape_funcio
from estudiantes e, carreras c, libros l, autores a, editoriales ed, biblioteca b, tipo t,
prestamo p, funcionarios f
wheree.id_carrera = c.id_carrera
ande.rut_est = p.rut_est
andl.cod_libro = p.cod_libro
andl.rut_autor = a.rut_autor
andl.id_edit = ed.id_edit
andl.id_biblio = b.id_biblio
andl.id_tipo = t.id_tipo
andf.rut_func = p.rut_func)
5. Además deberá indicarse la FECHA de PRESTAMO y la FECHA de
ENTREGA de éste.
NOTA: deberá añadir ALIAS al NOMBRE del estudiante, del funcionario,
del autor y de la carrera para diferenciarlos.
CREATEVIEWdata_relacion_funcionario_prestamo_fecha_P_E
AS
(
selecte.rut_est, e.nombres as estudiante, e.apellidos, c.nombre as carrera,
l.cod_libro, l.titulo, l.agno, a.nombres as autor, a.apellidos as ape_autor, ed.nombre
as edit, ed.pais, b.biblioteca, t.tipo_p, f.rut_func, f.nombres as funcionario,
f.apellidos as ape_funcio, p.fecha_p as prest_fecha, p.fecha_e as entrega
from estudiantes e, carreras c, libros l, autores a, editoriales ed, biblioteca b, tipo t,
prestamo p, funcionarios f
wheree.id_carrera = c.id_carrera
ande.rut_est = p.rut_est
andl.cod_libro = p.cod_libro
andl.rut_autor = a.rut_autor
andl.id_edit = ed.id_edit
andl.id_biblio = b.id_biblio
andl.id_tipo = t.id_tipo
andf.rut_func = p.rut_func)
3.- Se solicita obtener lo siguiente (consultas):
a) El numero de Estudiantes por Carrera.
Createviewestudiantes_por_carrera
selectci.id_ciudad, count(e.rut_est)
fromestudiantes e, ciudad ci
groupbyci.id_ciudad
b) El numero de Estudiantes por Campus
Createviewestudiantes_por_campus
selectcc.id_campus, count(e.rut_est)
from estudiantes e, campus cc
group by cc.id_campus
6. c) El numero de Estudiantes por Ciudad
Createviewestudiantes_por_ciudad
selectci.id_ciudad, count(e.rut_est)
from estudiantes e, ciudad ci
group by ci.id_ciudad
d) El numero de Préstamos atrasados
Create view prestamos_atrasados
selectfecha_e, count(fecha_p)
from prestamo
group by fecha_e having fecha_e<sysdate
e) El número de Prestamos Activos, No atrasados.
Createviewprestamos_activos_no_atrasados
selectfecha_e, count(fecha_p)
from prestamo
group by fecha_e
having fecha_e>sysdate