En una base de datos, una vista es el conjunto de resultados de una consulta almacenada en los datos. Es una consulta que se presenta como una tabla (virtual) a partir de un conjunto de tablas en una base de datos relacional.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se almacena de ellas la definición, no los datos. Los datos que se recuperan mediante una consulta a una vista se presentarán igual que los de una tabla. De hecho, si no se sabe que se está trabajando con una vista, nada hace suponer que es así. Al igual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista. Aunque siempre es posible seleccionar datos de una vista, en algunas condiciones existen restricciones para realizar el resto de las operaciones sobre vistas.
Una vista se especifica a través de una expresión de consulta (una sentencia SELECT) que la calcula y que puede realizarse sobre una o más tablas. Sobre un conjunto de tablas relacionales se puede trabajar con un número cualquiera de vistas.
La mayoría de los SGBD soportan la creación y manipulación de vistas. Las vistas se crean cuando se necesitan hacer varias sentencias para devolver una tabla final.
Sintaxis de una vista
En bases de datos, una vista es una consulta a una o más tablas de una base de datos que devuelve resultados sin almacenar los datos en una tabla separada. Las vistas se utilizan a menudo para proporcionar una vista "filtrada" de los datos en una base de datos, por ejemplo, una vista que solo muestra los datos de una tabla para un cierto rango de fechas o para un cierto conjunto de valores de columna. La sintaxis de una vista es la siguiente:
CREATE VIEW nombre_vista AS (SELECT * FROM tabla)
CREATE VIEW nombre_vista AS (SELECT * FROM tabla)
significa que se está creando una vista llamada "nombre_vista
" que refleja los resultados de la consulta en la tabla "tabla
". El símbolo " AS
" indica que la vista se está definiendo en términos de otra vista o tabla. El símbolo "()
" indica que la vista está compuesta por una consulta. El símbolo "*
" indica que la vista devuelve todos los atributos de la tabla "tabla
".
Los elementos básicos de una vista son:
- El nombre de la vista
- Las tablas o vistas de las que se deriva
- La consulta que se ejecuta para obtener los datos
- Las opciones de la consulta, como los filtros o los atributos que se devuelven
Equivalencia
Una vista es equivalente a su consulta de origen. Cuando las consultas se ejecutan en vistas, la consulta se modifica. Por ejemplo, si existe una vista llamada accounts_view con el contenido de la siguiente manera:
accounts_view: ------------- SELECT name, money_received, money_sent, (money_received - money_sent) AS balance, address, ... FROM table_customers c JOIN accounts_table a ON a.customer_id = c.customer_id
Entonces la aplicación podría ejecutar una consulta simple como:
Simple query ------------ SELECT name, balance FROM accounts_view
Luego, el RDBMS toma la consulta simple, reemplaza la vista equivalente y luego envía lo siguiente al optimizador de consultas:
Preprocessed query: ------------------ SELECT name, balance FROM (SELECT name, money_received, money_sent, (money_received - money_sent) AS balance, address, ... FROM table_customers c JOIN accounts_table a ON a.customer_id = c.customer_id )
Luego, el optimizador elimina los campos innecesarios y la complejidad (por ejemplo: no es necesario leer la dirección, ya que la invocación principal no la utiliza) y luego envía la consulta al motor SQL para su procesamiento.