Las vistas (o views) en una base de datos son consultas guardadas que actúan como tablas virtuales. Se basan en una consulta SELECT
y muestran datos de una o más tablas sin almacenar físicamente esos datos. Las vistas permiten simplificar la complejidad de las consultas, proteger la información sensible y organizar mejor el acceso a los datos.
Simplificación de Consultas Complejas:
Seguridad y Control de Acceso:
Independencia de Datos:
Organización y Personalización de Datos:
Las vistas se ejecutan en tiempo real cada vez que se acceden, es decir, no almacenan los datos, sino que extraen la información actualizada de las tablas subyacentes cada vez que se consultan. Algunos sistemas de bases de datos también permiten vistas materializadas, que son vistas especiales que almacenan físicamente los resultados de la consulta para mejorar el rendimiento en grandes volúmenes de datos. Sin embargo, las vistas comunes solo guardan la consulta sin duplicar los datos.
Para crear una vista en SQL, se usa el comando CREATE VIEW
, seguido de un nombre para la vista y una consulta SELECT
que define los datos que mostrará la vista.
Supongamos que tenemos una base de datos con dos tablas: empleados
y departamentos
.
CREATE TABLE departamentos (
id_departamento INT PRIMARY KEY,
nombre_departamento VARCHAR(50)
);
CREATE TABLE empleados (
id_empleado INT PRIMARY KEY,
nombre VARCHAR(50),
id_departamento INT,
salario DECIMAL(10, 2),
fecha_contratacion DATE,
FOREIGN KEY (id_departamento) REFERENCES departamentos(id_departamento)
);
Crear una Vista para Consultar Empleados y sus Departamentos:
CREATE VIEW vista_empleados_departamentos AS
SELECT e.id_empleado, e.nombre, d.nombre_departamento, e.salario
FROM empleados e
JOIN departamentos d ON e.id_departamento = d.id_departamento;
En este ejemplo:
vista_empleados_departamentos
combina información de ambas tablas y muestra solo el id_empleado
, nombre
, nombre_departamento
y salario
.JOIN
entre las tablas empleados
y departamentos
para obtener los datos actualizados.Crear una Vista para Restringir Información Sensible:
Si queremos que ciertos usuarios vean solo información general y no el salario de los empleados, podemos crear una vista sin la columna salario
:
CREATE VIEW vista_publica_empleados AS
SELECT id_empleado, nombre, id_departamento
FROM empleados;
Vista con Condiciones:
Podemos crear una vista que muestre solo a los empleados que ganen más de cierto monto, por ejemplo, 5000:
CREATE VIEW vista_empleados_alto_salario AS
SELECT id_empleado, nombre, salario
FROM empleados
WHERE salario > 5000;
Una vez creada la vista, podemos tratarla como una tabla y realizar consultas como en cualquier otra:
SELECT * FROM vista_empleados_departamentos;
Modificar una Vista: Para modificar la estructura de una vista, se usa el comando CREATE OR REPLACE VIEW
. Esto elimina la vista anterior y la reemplaza con la nueva definición.
CREATE OR REPLACE VIEW vista_empleados_departamentos AS
SELECT e.id_empleado, e.nombre, d.nombre_departamento, e.salario, e.fecha_contratacion
FROM empleados e
JOIN departamentos d ON e.id_departamento = d.id_departamento;
Eliminar una Vista: Para eliminar una vista se usa DROP VIEW
.
DROP VIEW vista_empleados_departamentos;
Actualización de Datos a Través de una Vista:
INSERT
, UPDATE
o DELETE
directamente sobre ellas, pero solo si cumplen ciertas condiciones (por ejemplo, si la vista se basa en una sola tabla y no contiene funciones agregadas o DISTINCT
).Limitaciones de las Vistas:
Resumen: Las vistas son herramientas útiles para simplificar, organizar y asegurar el acceso a los datos en una base de datos. Permiten reutilizar consultas complejas, mejorar la seguridad y personalizar la visualización de los datos.