Anda di halaman 1dari 16

PBD3301 PROGRAMACIN DE BASE DE DATO

reando Vistas en la Base de Datos

Unidad de Aprendizaje N1
Construyendo Consultas SQL
Aprendizaje Esperado :
Construir sentencias de recuperacin y manipulacin, de
una base de datos relacional, segn sintaxis, restricciones
del lenguaje, requisitos de la lgica negocios, requisitos de
informacin y sistema de gestin de base de datos.
CREATE OR REPLACE VIEW v_trabajo_sum(nombre_trabajo, minsal, maxsal, avgsal)
AS SELECT j.job_title, MIN(e.salary), MAX(e.salary), ROUND(AVG(e.salary))
FROM employees e JOIN jobs j
ON (e.job_id = j.job_id)
GROUP BY j.job_title;

Objetivos de la Clase

Definir qu es una Vista de Base de Datos.


Describir las ventajas al usar una Vista .
Cmo crear una Vista Simple y Compleja.
Cmo efectuar operaciones DML a travs de las Vistas.
Usar las opciones WITH CHECK OPTION y WITH READ ONLY en una
Vista.

Qu es una Vista?
Tabla EMPLOYEES

Ventajas de las Vistas

Para
re
acce stringir e
so a
dato l
s

lizar
a
e
r
a
Pa r
ultas
s
n
o
c
en
s
a
j
e
l
comp fcil
forma

VISTAS
Para
ionar
proporc ncia
de
indepen s
de dato

Para pr
esent
visione ar
s
diferen
tes de
los
mismo
s
datos

Vistas Simples y Complejas

Existen dos clasificaciones para las Vistas: Simples y Complejas


CARACTERSTICAS

VISTA
COMPLEJA

VISTA SIMPLE

Nmero de Tablas

Una

Una o ms

Contiene Funciones

No

Contiene grupos de datos

No

Operaciones DML a travs de la vista

Si

No siempre

Creando una Vista

Se debe incorporar una subconsulta a la sentencia CREATE VIEW.


Para mostrar los datos que contiene la vista se utilizan las mismas
clusulas vlidas de una sentencia SELECT para mostrar datos de
una tabla

Sintaxis:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW nombre_vista
[(alias[, alias]...)]
AS subconsulta
[WITH CHECK OPTION [CONSTRAINT nombre_constraint ]]
[WITH READ ONLY [CONSTRAINT nombre_constraint ]];

Creando una Vista Simple

Ejemplo:

CREATE VIEW v_emp_depto_80


AS SELECT employee_id, last_name, salary
FROM employees
WHERE department_id = 80;

DESC v_emp_depto_80;

SELECT *
FROM v_emp_depto_80
ORDER BY salary, last_name;

.........
.........

Creando una Vista Simple

Ejemplo:

CREATE VIEW v_salarios_depto_50


AS SELECT employee_id ID_EMPLEADO, last_name APELLIDO,
salary SALARIO_MENSUAL, salary*12
SALARIO_ANUAL
FROM
employees
WHERE department_id = 50;

SELECT *
FROM v_salarios_depto_50;
...........
...........

Modificando una Vista

Usar la clusula CREATE OR REPLACE VIEW.

Ejemplo:

CREATE OR REPLACE VIEW v_emp_depto_80


(id_empleado, nombre, salario, id_departmento)
AS SELECT employee_id, first_name || ' ' || last_name, salary,
department_id
FROM employees
WHERE department_id = 80;

DESC v_emp_depto_80;

SELECT nombre, salario


FROM v_emp_depto_80
WHERE salario > 10000;

Creando una Vista Compleja

Ejemplo:

CREATE OR REPLACE VIEW v_dept_sum


(nombre_depto, minsal, maxsal, avgsal)
AS SELECT d.department_name, MIN(e.salary), MAX(e.salary),
ROUND(AVG(e.salary))
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
GROUP BY d.department_name;

SELECT *
FROM v_dept_sum
ORDER BY minsal, nombre_depto;

Reglas para Efectuar Operaciones DML


sobre una Vista

Generalmente se pueden realizar operaciones DML sobre vistas


simples.

No se pueden eliminar filas si la vista contiene: funciones de grupo,


clusula GROUP BY, la palabra DISTINCT o una pseudocolumna (ej.
ROWNUM).

No se pueden modificar datos en una vista si contiene: funciones de


grupo, clusula GROUP BY, la palabra DISTINCT, una pseudocolumna
(ej. ROWNUM), columnas definidas por una expresin o si las
columnas NOT NULL en la tabla base no han sido seleccionadas en la
vista

Uso de la Clusula WITH CHECK OPTION

Es posible realizar controles de la integridad referencial.


Garantiza que las operaciones INSERT y UPDATE realizadas a travs
de la vista no pueden crear o actualizar filas que no seran
seleccionadas por la propia vista.

Ejemplo:

CREATE OR REPLACE VIEW v_dept30


AS SELECT *
FROM employees
WHERE department_id=30
WITH CHECK OPTION CONSTRAINT control_v_dept30;

Uso de la Clusula WITH CHECK OPTION

UPDATE v_dept30
SET department_id=10
WHERE employee_id = 115;

Uso de la Clusula WITH READ ONLY

Asegura de que no se efecten operaciones DML en la vista.

Ejemplo:

CREATE OR REPLACE VIEW empvu10


(employee_number, employee_name, job_title)
AS SELECT employee_id, last_name, job_id
FROM employees
WHERE department_id = 10
WITH READ ONLY ;

DELETE FROM empvu10


WHERE employee_number = 200;

Resumen de la Clase

Se defini qu es una Vista de Base de Datos.


Se describieron las ventajas al usar una Vista.
Se explic cmo crear una Vista Simple y Compleja.
Se explic cmo efectuar operaciones DML a travs de las Vistas.
Se explic cmo usar las opciones WITH CHECK OPTION y WITH READ
ONLY en una Vista.

Anda mungkin juga menyukai