15
Laboratorio N° 2 Vistas en SQL Carolina Navarro Díaz y Patricia Vargas Muñoz Valdivia, 22 de Noviembre de 2012

Laboratorio nº2

Embed Size (px)

Citation preview

Page 1: Laboratorio nº2

Laboratorio N° 2 Vistas en SQL

Carolina Navarro Díaz y Patricia Vargas Muñoz

Valdivia, 22 de Noviembre de 2012

Page 2: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

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

Page 3: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

3

b) Que entregue los estudiantes que son de Auditoria (NOMBRES y APELLIDOS del

estudiante, NOMBRE de la carrera y NOMBRE del campus).

Page 4: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

4

c) Que entregue los estudiantes que se atrasaron en la entrega de los libros (RUT,

NOMBRES, APELLIDOS y FONO).

d) La cantidad de libros prestados.

Page 5: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

5

e) Los libros de editoriales extranjeras (CODIGO, TITULO, AÑO y PAIS de ORIGEN).

Page 6: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

6

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

Page 7: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

7

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

Se debe entregar el RUT, NOMBRE y APELLIDOS del estudiante, además del

NOMBRE de la carrera a la cual pertenece.

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.

Se debe indicar que funcionario realizo la transacción, con RUT, NOMBRE y

APELLIDO.

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.

Page 8: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

8

3.- Se solicita obtener lo siguiente (vistas):

a) El número de Estudiantes por Carrera.

Page 9: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

9

b) El número de Estudiantes por Campus

c) El número de Estudiantes por Ciudad

d) El numero de Préstamos atrasados

Page 10: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

10

e) El número de Prestamos Activos, No atrasados.

Page 11: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

11

Detalle de los comandos utilizados en este laboratorio

Que entregue los estudiantes que son de Ing. Comercial (NOMBRES y APELLIDOS del estudiante, NOMBRE de la carrera y NOMBRE del campus)

CREATE OR REPLACE vw_ESTUDIANTES_COMERCIAL AS

SELECT E.NOMBRES, E.APELLIDOS, CA.NOMBRE, CA.NOMBRE

CAMPUS CA, CARRERAS CR, ESTUDIANTES E

WHERE CA.ID_CAMPUS = CR.ID_CAMPUS

AND CR.ID_CARRERA = E.ID_CARRERA

AND CR.NOMBRE = 'ING. COMERCIAL'

Que entregue los estudiantes que son de Auditoria (NOMBRES y APELLIDOS del

estudiante, NOMBRE de la carrera y NOMBRE del campus)

CREATE OR REPLACE vw_ESTUDIANTES_AUDITORIA AS

SELECT E.NOMBRES, E.APELLIDOS, CA.NOMBRE, CA.NOMBRE

FROM CAMPUS CA, CARRERAS CR, ESTUDIANTES E

WHERE CA.ID_CAMPUS = CR.ID_CAMPUS

AND CR.ID_CARRERA = E.ID_CARRERA

AND CR.NOMBRE = 'AUDITORIA'

Page 12: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

12

Que entregue los estudiantes que se atrasaron en la entrega de los libros (RUT,

NOMBRES, APELLIDOS y FONO)

CREATE OR REPLACE vw_ESTUDIANTES_ATRASADOS AS

SELECT E.NOMBRES, E.APELLIDOS, E.RUT_EST, E.FONO, PR.FECHA_E

FROM ESTUDIANTES E, PRESTAMO PR

WHERE E.RUT_EST = PR.RUT_EST

AND FECHA_E < trunc(SYSDATE)

La cantidad de libros prestados.

CREATE OR REPLACE VIEW vw_clibros_prestados AS (crea la vista)

SELECT COUNT(cod_libro) AS prestamos_libro FROM préstamo

(Cuenta todos los libros en la tabla Préstamo y lo agrupa en la variable prestamo_libros)

Los libros de editoriales extranjeras (CODIGO, TITULO, AÑO y PAIS de ORIGEN).

CREATE OR REPLACE VIEW vw_libros_edit_extranjeras AS (crea la vista)

SELECT libros.Cod_libro, libros.Titulo, libros.agno, editoriales.Pais

FROM libros

INNER JOIN editoriales

ON libros.id_edit=editoriales.id_edit

WHERE editoriales.pais <> 'CHILE';

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

CREATE OR REPLACE VIEW vw_libros_reserva AS (crea la vista)

SELECT libros.Cod_libro, libros.Titulo, libros.agno, biblioteca.biblioteca, autores.nombres,

autores.apellidos, editoriales.nombre, editoriales.pais

FROM libros

Page 13: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

13

INNER JOIN autores ON libros.rut_autor = autores.rut_autor

INNER JOIN biblioteca ON libros.id_biblio = biblioteca.id_biblio

INNER JOIN editoriales ON libros.id_edit = editoriales.id_edit

INNER JOIN tipo ON libros.id_tipo = tipo.id_tipo WHERE tipo.tipo_p = 'RESERVA';

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

Se debe entregar el RUT, NOMBRE y APELLIDOS del estudiante, además del

NOMBRE de la carrera a la cual pertenece.

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.

Se debe indicar que funcionario realizo la transacción, con RUT, NOMBRE y

APELLIDO.

Además deberá indicarse la FECHA de PRESTAMO y la FECHA de ENTREGA de éste.

CREATE OR REPLACE VIEW vw_alumno_teja_prestamo AS (Crea la vista)

SELECT estudiantes.rut_est, estudiantes.nombres, estudiantes.apellidos,

prestamo.cod_libro, carreras.nombre, libros.Cod_libro, libros.Titulo, libros.agno,

autores.nombres, autores.apellidos, editoriales.nombre, editoriales.pais,

biblioteca.biblioteca, funcionarios.rut_func, funcionarios.nombres, funcionarios.apellidos,

prestamo.fecha_p, prestamo.fecha_e

FROM estudiantes

INNER JOIN prestamo ON estudiantes.rut_est = prestamo.rut_est

INNER JOIN libros ON prestamo.cod_libro = libros.cod_libro

INNER JOIN editoriales ON libros.id_edit = editoriales.id_edit

Page 14: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

14

INNER JOIN autores ON libros.rut_autor = autores.rut_autor

INNER JOIN biblioteca ON libros.id_biblio = biblioteca.id_biblio

INNER JOIN funcionarios ON prestamo.rut_func = funcionarios.rut_func

INNER JOIN carreras ON estudiantes.id_carrera = carreras.id_carrera

INNER JOIN campus ON carreras.id_campus = campus.id_campus where campus.nombre

= 'ISLA TEJA'

Se solicita obtener lo siguiente (vistas):

N° de Estudiantes por Carrera.

CREATE OR REPLACE VIEW vw_cant_estudiantes_x_Carrera AS (Crea la vista)

SELECT carreras.nombre, carrera.cantidad_alumnos

FROM carreras

INNER JOIN (SELECT id_carrera, count(*) cantidad_alumnos FROM estudiantes group by

id_carrera) carrera ON carreras.id_carrera = carrera.id_carrera

N° de Estudiantes por Campus

CREATE OR REPLACE VIEW vw_cant_estudiantes_x_campus AS (Crea la vista)

Select count (*)

From estudiantes e,carreras c

Where e.id_campus=c.id_campus

N° de Estudiantes por Ciudad

CREATE OR REPLACE VIEW vw_cant_estudiantes_x_ciudad AS

Select count (*)

From estudiantes e

Page 15: Laboratorio nº2

Carolina Navarro y Patricia Vargas Estudiantes de Auditoría

15

Where e.id_ciudad=c.id_ciudad

N° de Préstamos atrasados

CREATE OR REPLACE VIEW vw_prestamos_atrasados AS (Crea la vista)

SELECT COUNT(cod_libro) AS atrasados from prestamo where fecha_e < SYSDATE

N° de Prestamos Activos, No atrasados.

CREATE OR REPLACE VIEW vw_prestamos_no_atrasados AS (Crea la vista)

SELECT COUNT(cod_libro) AS no_atrasados from prestamo where fecha_e >= SYSDATE