Vistas, VIEW
Las aplicaciones bien diseñadas suelen ofrecer una interfaz pública y ocultar los detalles de implementación, lo que permite cambiar el diseño sin afectar a los usuarios finales.
Al diseñar tu base de datos puedes conseguir un resultado parecido: cierras el acceso a las tablas y das acceso a los datos solo a través de un conjunto de vistas.
En este artículo veremos qué son las vistas, cómo se crean y para qué pueden ser útiles.
Qué es una vista
A las vistas a veces se las llama «tablas virtuales». Esto se debe a que, para el usuario, una vista parece una tabla, pero en realidad no almacena datos, sino que los extrae de otras tablas en el momento del acceso.
Si los datos de la tabla base cambian, el usuario obtiene los datos actualizados al acceder a la vista que usa esa tabla. Además, las vistas no guardan en caché los resultados que obtienen de las tablas.
Ejemplo de creación de una vista
Como ejemplo sencillo, supongamos que quieres ocultar parcialmente las direcciones de correo electrónico de la tabla de usuarios (Users).
Esto puede ser útil, por ejemplo, si la política de tu empresa no permite que todo el mundo use la información confidencial de los usuarios. Así que, en lugar de permitir el acceso directo a la tabla de usuarios (Users), defines una vista llamada ViewUsers y exiges que todos la usen para acceder a los datos de los usuarios.
Este es un ejemplo de definición de esa vista:
MySQL 8.4CREATE VIEW ViewUsers AS SELECT id, name, CONCAT(SUBSTR(email, 1, 2), '****', SUBSTR(email, -4)) AS email FROM Users;
Este es un ejemplo de definición de esa vista:
MySQL 8.4CREATE VIEW ViewUsers AS SELECT id, name, CONCAT(SUBSTR(email, 1, 2), '****', RIGHT(email, 4)) AS email FROM Users;
En una consulta SQL, una vista tiene el mismo aspecto y se usa igual que una tabla normal:
MySQL 8.4SELECT * FROM ViewUsers;
Si quieres saber qué columnas hay disponibles en la vista, puedes usar la sentencia DESCRIBE:
MySQL 8.4DESCRIBE ViewUsers;
Si quieres saber qué columnas hay disponibles en la vista, puedes hacer una consulta a information_schema:
MySQL 8.4SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'viewusers';
Sintaxis general de una vista
CREATE [OR REPLACE]
VIEW nombre_vista [(campo_vista [, ...])]
AS expresion_select;- [ ]parte opcional
- ...se puede repetir
- OR REPLACE
Si ya existe una vista con ese nombre, se sustituye por la nueva. Sin OR REPLACE, intentar crear una vista con un nombre ya ocupado termina con un error.
Palabra claveOpcional- nombre_vista
El nombre de la nueva vista. Con él te refieres a la vista en las consultas, igual que a una tabla.
- campo_vista
Los nombres de las columnas de la vista. Si no los indicas, las columnas toman los nombres de la consulta SELECT.
Opcional- expresion_select
La consulta SELECT cuyo resultado muestra la vista.
Subconsulta
CREATE [OR REPLACE] VIEW nombre_vista [(campo_vista [, ...])]
AS expresion_select;- [ ]parte opcional
- ...se puede repetir
- OR REPLACE
Si ya existe una vista con ese nombre, se sustituye por la nueva. Sin OR REPLACE, intentar crear una vista con un nombre ya ocupado termina con un error. La nueva consulta debe devolver las mismas columnas en el mismo orden; solo puedes añadir columnas nuevas al final.
Palabra claveOpcional- nombre_vista
El nombre de la nueva vista. Con él te refieres a la vista en las consultas, igual que a una tabla.
- campo_vista
Los nombres de las columnas de la vista. Si no los indicas, las columnas toman los nombres de la consulta SELECT.
Opcional- expresion_select
La consulta SELECT cuyo resultado muestra la vista.
Subconsulta
Para qué sirven las vistas
Simplificar consultas complejas
Las vistas se usan para simplificar consultas complejas y crear una capa de abstracción entre el usuario y la base de datos. Pueden ocultar la complejidad de la estructura de datos y ofrecer una interfaz simplificada para acceder a los datos.
Mejorar el rendimiento
Crear vistas que encapsulan consultas complejas puede ayudar a optimizar la ejecución de esas consultas. Esto puede hacer que las consultas se ejecuten más rápido y mejorar el rendimiento general de la base de datos.
Crear vistas que encapsulan consultas complejas puede ayudar a optimizar la ejecución de esas consultas. PostgreSQL admite vistas materializadas (MATERIALIZED VIEW), que almacenan físicamente los resultados de la consulta y se actualizan periódicamente, lo que puede mejorar mucho el rendimiento de las consultas complejas.
Garantizar la seguridad
Las vistas se pueden usar para proteger los datos confidenciales. Al crear vistas que limitan el acceso a determinadas columnas o filas, los administradores pueden restringir el acceso a la información sensible. Esto ayuda a garantizar que solo los usuarios autorizados tengan acceso a los datos confidenciales.
Conclusiones
Las vistas son una herramienta importante de SQL que permite simplificar consultas complejas, estandarizar el acceso a los datos, mejorar el rendimiento y garantizar la seguridad de los datos.
Vamos a comprobar si has asimilado el tema: elige la afirmación correcta para la pregunta «¿Qué es una vista en una base de datos?»