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