Criar e consultar visões

Concluído

As visualizações são consultas salvas que você pode criar em seus bancos de dados. Uma única exibição pode referenciar uma ou mais tabelas. E, assim como uma tabela, uma exibição consiste em linhas e colunas de dados. Você pode usar exibições como fonte para suas consultas da mesma maneira que as tabelas. No entanto, as exibições não armazenam dados de forma persistente; a definição da exibição é desempacotada em runtime e os objetos de origem são consultados.

A similaridade aparente entre uma tabela e uma visão oferece um benefício importante. Seus aplicativos podem ser criados para usar exibições em vez das tabelas subjacentes, impedindo o aplicativo de fazer alterações nas tabelas. Isso fornece uma camada adicional de segurança para seus dados.

Enquanto a exibição continuar a apresentar a mesma estrutura ao aplicativo de chamada, o aplicativo também receberá resultados consistentes. Dessa forma, as exibições podem ser consideradas uma API (interface de programação de aplicativo) para um banco de dados para fins de recuperação de dados.

Observação

As exibições devem ser criadas por um desenvolvedor ou administrador de banco de dados com a permissão apropriada no banco de dados.

Criar uma visualização

Para criar uma exibição, use a instrução CREATE VIEW para nomear e armazenar uma única instrução SELECT. Você criaria uma exibição usando a seguinte sintaxe:

CREATE VIEW <schema_name.view_name> [<column_alias_list>] 
[WITH <view_options>]
AS select_statement;

Observação

A cláusula ORDER BY não é permitida em uma definição de exibição, a menos que a exibição use um elemento TOP, OFFSET/FETCH ou FOR XML.

Por exemplo, para criar uma exibição chamada Sales.CustOrders com base em uma instrução SELECT personalizada que engloba várias tabelas, você pode escrever a seguinte consulta:

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 a maior parte do código no exemplo consiste na instrução SELECT. As instruções SELECT dentro das definições de exibição podem ser tão complexas ou simples quanto você deseja que sejam.

Consultar uma exibição

Para consultar uma exibição e recuperar resultados dela, confira-a na cláusula FROM de uma instrução SELECT, como você faria referência a uma tabela. Por exemplo, para retornar a ID do cliente, o mês do pedido e a quantidade de itens de cada pedido na exibição Sales.CustOrders , você pode executar a seguinte consulta:

SELECT custid, ordermonth, qty
FROM Sales.CustOrders;