Creación y consulta de vistas

Completados

Las vistas son consultas guardadas que puede crear en las bases de datos. Una sola vista puede hacer referencia a una o varias tablas. Y, al igual que una tabla, una vista consta de filas y columnas de datos. Puede usar vistas como origen para las consultas de la misma manera que las tablas. Sin embargo, las vistas no almacenan datos de forma persistente; La definición de la vista se desempaqueta en tiempo de ejecución y se consultan los objetos de origen.

La similitud aparente entre una tabla y una vista proporciona una ventaja importante. Las aplicaciones se pueden escribir para usar vistas en lugar de las tablas subyacentes, lo que protege a la aplicación de realizar cambios en las tablas. Esto le proporciona una capa adicional de seguridad para los datos.

Siempre que la vista continúe presentando la misma estructura a la aplicación que realiza la llamada, la aplicación también recibirá resultados coherentes. De este modo, las vistas se pueden considerar una interfaz de programación de aplicaciones (API) en una base de datos con fines de recuperación de datos.

Nota:

Los desarrolladores o administradores de bases de datos deben crear vistas con el permiso adecuado en la base de datos.

Crea una vista

Para crear una vista, use la CREATE VIEW instrucción para asignar un nombre y almacenar una sola SELECT instrucción. Crearía una vista con la sintaxis siguiente:

CREATE [ OR ALTER ] VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ]
[ ; ]

Use OR ALTER para crear una nueva vista o redefinir una existente sin un paso independiente DROP VIEW . WITH CHECK OPTION impide INSERT que UPDATE las operaciones a través de la vista generen filas que se encuentran fuera de los criterios de SELECT la vista.

La WITH cláusula admite los siguientes atributos de vista:

Opción Description
SCHEMABINDING Enlaza la vista al esquema de sus tablas base, lo que impide los cambios que interrumpirían la vista. Necesario para las vistas indizadas.
ENCRYPTION Cifra la definición de vista en el catálogo del sistema para que no se pueda leer.
VIEW_METADATA Devuelve metadatos de vista (en lugar de metadatos de tabla base) a las API cliente.

Nota:

La ORDER BY cláusula no se permite en una definición de vista a menos que la vista use un elemento TOP, OFFSET/FETCH o FOR XML.

Por ejemplo, para crear una vista denominada Sales.CustOrders basada en una instrucción personalizada SELECT que abarque varias tablas, podría escribir la consulta siguiente:

CREATE VIEW Sales.CustOrders
AS
SELECT
  O.custid, 
  DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0) AS ordermonth,
  SUM(OD.qty) AS qty
FROM Sales.Orders AS O
  JOIN Sales.OrderDetails AS OD
    ON OD.orderid = O.orderid
GROUP BY custid, DATEADD(month, DATEDIFF(month, 0, O.orderdate), 0);

Observe que la mayoría del código del ejemplo consta de la SELECT instrucción . Las SELECT instrucciones dentro de las definiciones de vista pueden ser tan complejas o sencillas como quiere que sean.

Consulta de una vista

Para consultar una vista y recuperar los resultados de ella, haga referencia a ella en la FROM cláusula de una SELECT instrucción , como haría referencia a una tabla. Por ejemplo, para devolver el identificador de cliente, el mes del pedido y la cantidad de elementos de cada pedido en la vista Sales.CustOrders , puede ejecutar la consulta siguiente:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;