Consultar y Modificar Datos a Través de Vistas
En este paso, aprenderá cómo consultar y modificar datos a través de vistas en PostgreSQL. Si bien las vistas se utilizan principalmente para consultar datos, en algunos casos, también se pueden utilizar para modificar los datos subyacentes en las tablas base.
Consultar Datos a Través de Vistas
Como se demostró en el paso anterior, consultar datos a través de una vista es sencillo. Puede utilizar una sentencia SELECT
para recuperar datos de la vista como si fuera una tabla normal.
Por ejemplo, para recuperar todos los datos de la vista employee_info
:
SELECT * FROM employee_info;
También puede utilizar cláusulas WHERE
y otras construcciones SQL para filtrar y ordenar los datos:
SELECT * FROM employee_info WHERE department = 'Sales';
Esta consulta devolverá solo los empleados del departamento de Ventas (Sales).
Modificar Datos a Través de Vistas
La modificación de datos a través de una vista es posible bajo ciertas condiciones. La vista debe ser lo suficientemente simple para que PostgreSQL pueda determinar qué tabla base y qué columnas actualizar. Generalmente, una vista es modificable si cumple con los siguientes criterios:
- Selecciona desde una sola tabla.
- No contiene funciones de agregación (aggregate functions) (por ejemplo,
SUM
, AVG
, COUNT
).
- No contiene cláusulas
GROUP BY
, HAVING
o DISTINCT
.
Creemos otra vista que incluya el employee_id
para permitir actualizaciones más fáciles:
CREATE VIEW employee_details AS
SELECT employee_id, first_name, last_name, department, salary
FROM employees;
Ahora, intentemos actualizar el salario de un empleado a través de la vista employee_details
:
UPDATE employee_details
SET salary = 65000.00
WHERE employee_id = 1;
Esta sentencia actualiza el salario del empleado con employee_id
1 a 65000.00.
Puede verificar la actualización consultando la tabla employees
directamente:
SELECT * FROM employees WHERE employee_id = 1;
Debería ver que el salario para employee_id
1 se ha actualizado.
Insertar Datos a Través de Vistas
También puede insertar datos a través de una vista, siempre que la vista incluya todas las columnas no anulables (non-nullable columns) de la tabla base. Dado que nuestra vista employee_details
incluye todas las columnas de la tabla employees
, podemos insertar un nuevo empleado:
INSERT INTO employee_details (first_name, last_name, department, salary)
VALUES ('David', 'Lee', 'IT', 90000.00);
Tenga en cuenta que no especificamos el employee_id
porque es una columna serial y se generará automáticamente.
Verifique la inserción:
SELECT * FROM employees WHERE first_name = 'David' AND last_name = 'Lee';
Eliminar Datos a Través de Vistas
De manera similar, puede eliminar datos a través de una vista modificable:
DELETE FROM employee_details WHERE first_name = 'David' AND last_name = 'Lee';
Verifique la eliminación:
SELECT * FROM employees WHERE first_name = 'David' AND last_name = 'Lee';
Consideraciones Importantes
- No todas las vistas son modificables. Las vistas complejas con joins, agregaciones u otras operaciones complejas suelen ser de solo lectura (read-only).
- Modificar datos a través de vistas puede tener implicaciones en el rendimiento. PostgreSQL necesita traducir las operaciones de la vista en operaciones en las tablas base subyacentes.
- Tenga cuidado al modificar datos a través de vistas, ya que los cambios afectarán directamente a las tablas base.