VIEW (visão) SQL

As visões são tabelas visuais.

Este capítulo explica como criar, atualizar e excluir visões.

Sentença SQL CREATE VIEW

O que é uma visão?

Em SQL, uma visão é uma tabela visualizada a partir do conjunto de resultados de uma declaração SQL.

As visões contêm linhas e colunas, como uma tabela real. Os campos da visão são campos reais de uma ou mais tabelas reais do banco de dados. Podemos adicionar funções SQL, WHERE e JOIN às visões e também podemos submeter dados, como se viessem de uma única tabela.

Notas:O design e a estrutura do banco de dados não são afetados pelas funções, WHERE ou JOIN dentro da visão.

Sintaxe do SQL CREATE VIEW

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

Notas:As visões sempre mostram os dados mais recentes. Cada vez que um usuário consulta uma visão, o motor de banco de dados reconstitui os dados usando uma declaração SQL.

Exemplo de SQL CREATE VIEW

As visões podem ser usadas dentro de uma consulta, dentro de um procedimento armazenado ou dentro de outra visão. Ao adicionar funções, join, etc. às visões, podemos fornecer aos usuários os dados desejados de maneira precisa.

O banco de dados de amostra Northwind possui algumas visões padrão instaladas. A visão "Current Product List" lista todos os produtos em uso na tabela Products. Essa visão é criada usando o seguinte SQL:

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

Podemos consultar essa visão acima:

SELECT * FROM [Current Product List]

Outra visão do banco de dados de amostra Northwind selecionará todos os produtos da tabela Products cujo preço unitário seja acima do preço unitário médio:

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

Podemos consultar essa visão assim:

SELECT * FROM [Products Above Average Price]

Outra instância de visão proveniente do banco de dados Northwind calculará o total de vendas de cada tipo em 1997. Observe que essa visão选取数据来自另一个名为 "Product Sales for 1997" 的视图:

CREATE VIEW [Category Sales For 1997] COMO
SELECT DISTINCT CategoryName,Sum(ProductSales) COMO CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName 

Podemos consultar essa visão assim:

SELECT * FROM [Category Sales For 1997]

Também podemos adicionar condições à consulta. Agora, apenas precisamos ver as vendas totais da categoria "Beverages":

SELECT * FROM [Category Sales For 1997]
WHERE CategoryName='Beverages'

Atualizar Visão SQL

Você pode usar a seguinte sintaxe para atualizar a visão:

Sintaxe CREATE OR REPLACE VIEW do SQL
CREATE OR REPLACE VIEW view_name AS
SELECT nome_da_coluna(s)
FROM nome_da_tabela
WHERE condição

Agora, queremos adicionar a coluna "Categoria" à visão "Current Product List". Vamos atualizar a visão com o seguinte SQL:

CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName,Categoria
FROM Products
WHERE Descontinuado=Não

Revogar Visão SQL

Você pode usar o comando DROP VIEW para excluir uma visão.

Sintaxe DROP VIEW do SQL

DROP VIEW view_name