VIEW (vista) SQL

Las vistas son tablas visuales.

Este capítulo explica cómo crear, actualizar y eliminar vistas.

Sentencia SQL CREATE VIEW

¿Qué es una vista?

En SQL, las vistas son tablas visuales basadas en el resultado de una sentencia SQL.

Las vistas contienen filas y columnas, al igual que una tabla real. Los campos de las vistas son campos reales de una o más tablas de la base de datos. Podemos agregar funciones SQL, WHERE y JOIN a las vistas y presentar datos, como si vinieran de una única tabla.

Nota:El diseño y estructura de la base de datos no se verán afectados por las funciones, las cláusulas WHERE o JOIN dentro de las vistas.

Sintaxis de SQL CREATE VIEW

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

Nota:Las vistas siempre muestran los datos más recientes. Cada vez que un usuario consulta una vista, el motor de base de datos reconstruye los datos utilizando una sentencia SQL.

Ejemplo de SQL CREATE VIEW

Se puede utilizar una vista desde dentro de una consulta, de un procedimiento almacenado o de otra vista. Al agregar funciones, join, etc., podemos presentar a los usuarios los datos que queremos entregar.

La base de datos de muestra Northwind tiene algunas vistas preinstaladas. La vista "Current Product List" listará todos los productos en uso en la tabla Products. Esta vista se crea con el siguiente SQL:

CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName
FROM Products
WHERE Discontinued=No

Podemos consultar esta vista superior:

SELECT * FROM [Current Product List]

Otra vista de la base de datos de muestra Northwind seleccionará todos los productos con precios unitarios por encima del promedio en la tabla Products:

CREATE VIEW [Products Above Average Price] AS
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice>(SELECT AVG(UnitPrice) FROM Products) 

Podemos consultar esta vista de la siguiente manera:

SELECT * FROM [Products Above Average Price]

Otra instancia de vista de la base de datos Northwind calculará el total de ventas por especie en 1997. Nota: esta vista obtendrá datos de otra vista llamada "Product Sales for 1997":

CREATE VIEW [Ventas de Categoría para 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Ventas de Productos para 1997]
GROUP BY CategoryName 

Podemos consultar esta vista de la siguiente manera:

SELECT * FROM [Ventas de Categoría para 1997]

También podemos agregar condiciones a la consulta. Ahora, solo necesitamos ver todas las ventas de la categoría "Bebidas":

SELECT * FROM [Ventas de Categoría para 1997]
WHERE CategoryName='Bebidas'

Actualización de vista SQL

Puede actualizar la vista utilizando la siguiente sintaxis:

Sintaxis de CREATE OR REPLACE VIEW de SQL
CREATE OR REPLACE VIEW view_name AS
SELECT nombre_de_columna(s)
FROM nombre_de_tabla
WHERE condición

Ahora, queremos agregar la columna "Categoría" a la vista "Current Product List". Actualizaremos la vista con el siguiente SQL:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Categoría
FROM Products
WHERE Descontinuado=No

Revocación de vista SQL

Puede eliminar una vista utilizando la orden DROP VIEW.

Sintaxis de DROP VIEW de SQL

DROP VIEW view_name