Anda di halaman 1dari 16

PBD3301 PROGRAMACIN DE BASE DE DATOS

Creando 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
VISTAS
Vistas Simples y Complejas
Existen dos clasificaciones para las Vistas: Simples y Complejas
CARACTERSTICAS VISTA SIMPLE VISTA COMPLEJA
Nmero de Tablas Una Una o ms
Contiene Funciones No S
Contiene grupos de datos No S
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;

SELECT *
FROM v_emp_depto_80
ORDER BY salary, last_name;
DESC v_emp_depto_80;

1
2 3
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;
1
2
...........
...........
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;

SELECT nombre, salario
FROM v_emp_depto_80
WHERE salario > 10000;


DESC v_emp_depto_80;

1
2 3
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;

1
2
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;
1
Uso de la Clusula WITH CHECK OPTION


UPDATE v_dept30
SET department_id=10
WHERE employee_id = 115;
2
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 ;
1

DELETE FROM empvu10
WHERE employee_number = 200;
2
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