Desvendando o SQL - Parte V - Visões

Oi gente, estamos de volta com mais um artigo, o quinto de nossa série que tem objetivo de mostrar alguns pontos da linguagem SQL, em nosso último mostramos um dos comandos bastante utilizados na linguagem SQL o SELECT. Hoje vamos falar um pouco sobre a VIEW, o que é como criá-la e utilizá-la. Boa leitura.

Em determinadas situações precisamos consultar dados de uma ou mais tabelas, dependendo da situação essa consulta poderá ficar bem extensa, e se essa consulta precisar ser utilizada em vários locais diferentes? Já imaginou o tamanho que ficaria seu código, e o tanto de repetições que teria? E se fosse preciso mudar algum ponto dessa consulta? Teríamos que sair mudando em todos os locais que ela estivesse. Não seria melhor deixar seu código mais limpo? É para esse e outros momentos que utilizamos as VIEWS ou Visões do SQL. A utilização da VIEW nos permite alterar nela somente o que precisamos realizar uma recompilada e pronto, todos os objetos que utilizem a VIEW já serão carregados com as devidas alterações feitas, bem mais simples e profissional.

Tenho o costume também e já vi essa prática por onde passei da utilização de visões como fonte de retorno para relatórios, por ser bem mais prático, questões relacionadas a segurança, porque a visão já pode ser montada com a nomenclatura correta dos campos e com somente os campos que serão utilizados, e caso seja preciso alguma alteração não há necessidade de modificar o relatório, somente a visão.

O QUE É UMA VIEW


No MSDN a VIEW tem por definição ser uma tabela virtual cujo conteúdo é definido por uma consulta. E é exatamente isso, a VIEW lhe retorna o resultado de uma consulta, complexa ou não, é uma maneira também de oferecer segurança ao seu BD, não permitindo que os usuários acessem diretamente as tabelas. E como ela retorna também um conjunto de informações, pode inclusive ser usada em outras consultas, VIEW, PROCEDURES, como uma tabela em um SELECT, ser relacionada com outras views ou tabelas, etc.

COMO CRIAR UMA VIEW


A sintaxe de criação de uma VIEW é bem simples, do mesmo jeito a sintaxe de alteração.

Criação


CREATE VIEW <Nome_View>
AS
<Consulta>

Alteração


ALTER VIEW <Nome_View>
AS
<Consulta>


Bem simples, como exemplo, vamos criar a VIEW VPRODCATEG que nos dará uma relação de produtos e suas categorias.

CREATE VIEW VPRODCATEG
AS
SELECT
       P.CD_REFERENCIA AS CODIGO_REFERENCIA,
       P.NR_SERIE AS NUMERO_SERIE,
       DESC_PRODUTO AS PRODUTO,
       C.DESC_CATEGORIA AS CATEGORIA
FROM
       TBPRODUTO           P INNER JOIN
       TBSUBCATEGORIA      S ON S.CD_SUB = P.CD_SUB INNER JOIN
       TBCATEGORIA         C ON C.CD_CATEGORIA = S.CD_CATEGORIA


Agora com a VIEW criada vamos consultá-la e ver o retorno.
      
SELECT * FROM VPRODCATEG

CODIGO_REFERENCIA NUMERO_SERIE    PRODUTO                                            CATEGORIA
----------------- --------------- -------------------------------------------------- ------------------------------
1001              NS110011        Whisky 08 Anos                                     Bebidas
1002              NS210021        Whisky 12 Anos                                     Bebidas
1003              NS310031        Vinho                                              Bebidas
2001              NS420012        Arroz Branco                                       Cereais
2002              NS520022        Feijão Carioca                                     Cereais
3001              NS630013        Leite Longa Vida                                   Cereais
3002              NS730023        Leite Longa Vida Desnatado                         Cereais
4010              NS840104        Macarrão Parafuso                                  Enlatados
4020              NS940204        Macarrão Talharim                                  Enlatados
6100              NS1061005       Pêssego em Calda                                   Lacticínios
6200              NS1162005       Ervilha                                            Enlatados
6300              NS1263005       Milho Verde                                        Enlatados

(12 linha(s) afetadas)



Temos uma visão de varias tabelas de forma bem organizada fazendo uma única consulta. Agora e se esquecemos do campo de status do produto? Não tem problema nenhum, é só alterar a VIEW e incluir o novo campo. Veja abaixo a alteração e em seguida a mesma consulta da VIEW utilizada acima com o retorno já modificado.

ALTER VIEW VPRODCATEG
AS
SELECT
       P.CD_REFERENCIA AS CODIGO_REFERENCIA,
       P.NR_SERIE AS NUMERO_SERIE,
       DESC_PRODUTO AS PRODUTO,
       C.DESC_CATEGORIA AS CATEGORIA,
       P.ST_PRODUTO
FROM
       TBPRODUTO           P INNER JOIN
       TBSUBCATEGORIA      S ON S.CD_SUB = P.CD_SUB INNER JOIN
       TBCATEGORIA         C ON C.CD_CATEGORIA = S.CD_CATEGORIA
GO

      
SELECT * FROM VPRODCATEG

CODIGO_REFERENCIA NUMERO_SERIE    PRODUTO                                            CATEGORIA                      ST_PRODUTO
----------------- --------------- -------------------------------------------------- ------------------------------ ----------
1001              NS110011        Whisky 08 Anos                                     Bebidas                        A
1002              NS210021        Whisky 12 Anos                                     Bebidas                        A
1003              NS310031        Vinho                                              Bebidas                        A
2001              NS420012        Arroz Branco                                       Cereais                        A
2002              NS520022        Feijão Carioca                                     Cereais                        A
3001              NS630013        Leite Longa Vida                                   Cereais                        A
3002              NS730023        Leite Longa Vida Desnatado                         Cereais                        A
4010              NS840104        Macarrão Parafuso                                  Enlatados                      A
4020              NS940204        Macarrão Talharim                                  Enlatados                      A
6100              NS1061005       Pêssego em Calda                                   Lacticínios                    A
6200              NS1162005       Ervilha                                            Enlatados                      A
6300              NS1263005       Milho Verde                                        Enlatados                      A

(12 linha(s) afetadas)


Vimos que com uma alteração simples modificamos o resultado da visão. Vamos criar outras VIEWs e ver como funcionam.

Vamos aproveitar e utilizar as consultas que fizemos no artigo anterior.

CREATE VIEW VSOMACATEG
AS

SELECT C.CD_CATEGORIA, C.DESC_CATEGORIA, SUM(E.VLR_UNITARIO) AS SOMA_VALOR
FROM
       TBESTOQUE           E INNER JOIN
       TBPRODUTO           P ON P.CD_PRODUTO = E.CD_PRODUTO INNER JOIN
       TBSUBCATEGORIA      S ON S.CD_SUB = P.CD_SUB INNER JOIN
       TBCATEGORIA         C ON C.CD_CATEGORIA = S.CD_CATEGORIA
WHERE E.VLR_UNITARIO > 5
GROUP BY C.CD_CATEGORIA, C.DESC_CATEGORIA
HAVING SUM(E.VLR_UNITARIO) > 10
go

CREATE VIEW VPOSESTOQUE
AS

SELECT P.CD_REFERENCIA, P.DESC_PRODUTO, E.QTD_ESTOQUE, U.SGL_UNIDADE, E.VLR_UNITARIO
FROM
       TBESTOQUE    AS E INNER JOIN
       TBPRODUTO    AS P ON E.CD_PRODUTO = P.CD_PRODUTO INNER JOIN
       TBUNIDADE    AS U ON U.CD_UNIDADE = E.CD_UNIDADE


Podemos criar inúmeras visões de nosso banco, é bem interessante quando temos consultas que usamos com frequência. Criamos uma ou várias visões e vamos utilizando.

Nesse artigo mostramos um pouco o que são como criar e alterar visões, e também algumas utilidades das VIEWS. Em nosso próximo vamos abordar um assunto bem interessante, estamos nos referindo as STORED PROCEDURES ou aportuguesando, PROCEDIMENTOS ARMAZENADOS. Veremos como procedures são uma mão na roda em muitos pontos, espero por vocês. E não se esqueça de dar sua opinião sobre nossos artigos, comente, ache bom ou ruim não importa, diga o que falta, dê sua opinião, é ela que vale, afinal escrevo para você.

Grande abraço e até breve.

Artigos anteriores:




[i] Microsoft Developer Network

Comentários

Postagens mais visitadas