Vistas en SQL
Una VIEW podemos definirla como una tabla virtual con su conjunto de filas y columnas, cuyo contenido está definido por una consulta SELECT
sobre una o más tablas. Esto quiere decir, que los datos que contienen no están almacenados realmente en la vista, si no que se generan de manera dinámica de acuerdo a la consulta que ejecuten.
Las VIEW, se utilizan a menudo como filtros de las tablas de las que recogen datos y es por ello que se utilizan a menudo como mecanismos de seguridad, ya que permiten al usuario tener acceso de visibilidad de los datos, pero no a las tablas reales subyacentes. También se utilizan a menudo para simplificar y personalizar la visualización de los datos para el usuario.
La SELECT
que define la VIEW
puede provenir también de otras vistas del sistema.
En SQL Server, existen diferentes tipos de vistas:
-
Vistas de usuario: tablas virtuales definidas por el usuario cuyo contenido está definido por una consulta.
-
Vistas indexadas: cuyos datos se han almacenado como una tabla real ya que se han indizado a través de un índice clúster único. Este tipo de vistas mejoran mucho el rendimiento en algunos tipos de consultas que devuelven muchos registros.
-
Vistas con particiones: combinan datos horizontales con particiones de un conjunto de tablas miembro en uno o más servidores.
-
Vistas del sistema: específicas para consultar metadatos del sistema.
En el siguiente apartado nos centraremos en la ejemplificación de las sentencias DDL para la creación, actualización y eliminación de vistas de usuario:
CREATE VIEW
CREATE VIEW
es la sentencia DDL para la creación de vistas. La sintaxis es la siguiente:
CREATE VIEW nombreVista AS SELECT ...
Pasemos ahora a crear nuestra vista
de ejemplo:
CREATE VIEW vista_ejemplo AS
SELECT nombre,
apellidos,
producto,
descripcionProducto,
precio
FROM Clientes
INNER JOIN Pedidos
ON Clientes.idClientes = Pedidos.idClientes
WHERE precio >= 450;
Una vez creada, podemos desplegar los componentes de nuestra base de datos y visualizarla en el subdirectorio: Views
Para ejecutar la nueva VIEW, basta con hacer una SELECT
sobre ella:
SELECT * FROM vista_ejemplo;
nombre | apellidos | producto | descripcionProducto | precio |
---|---|---|---|---|
María | López Ruiz | Play Station 5 | Consola Sony | 549,95 |
María | López Ruiz | Xbox series X | Consola Xbox | 499,99 |
Fernando | García Rodríguez | MacBook Pro M1 | Portátil Apple | 2449,5 |
Como vemos, la VIEW muestra en una tabla virtual, el conjunto de resultados devueltos por laSELECT
sobre las tablas Clientes
y Pedidos
.
ALTER VIEW
ALTER VIEW
, es la sentencia DDL para la actualización de vistas. La sintaxis es la siguiente:
ALTER VIEW nombreVista AS SELECT ...
Pasemos ahora a actualizar nuestra VIEW: vista_ejemplo
ALTER VIEW vista_ejemplo AS
SELECT nombre,
apellidos,
producto,
descripcionProducto,
precio
FROM Clientes
INNER JOIN Pedidos
ON Clientes.idClientes = Pedidos.idClientes
WHERE precio >= 450
AND descripcionProducto LIKE '%Consola%';
Si ejecutamos la consulta, veríamos que solo devuelve los dos primeros registros anteriores al añadirle la condición con la cláusula LIKE
.
nombre | apellidos | producto | descripcionProducto | precio |
---|---|---|---|---|
María | López Ruiz | Play Station 5 | Consola Sony | 549,95 |
María | López Ruiz | Xbox series X | Consola Xbox | 499,99 |
DROP VIEW
DROP VIEW
, es la sentencia DDL para la eliminación de vistas. La sintaxis es la siguiente:
DROP VIEW nombreVista;
Pasemos ahora a eliminar nuestra VIEW: vista_ejemplo
DROP VIEW vista_ejemplo;