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:
Desvendando o SQL - Parte II - Criando um Banco de Dados e Tabelas
Desvendando o SQL - Parte III - Alterando Registros
Desvendando o SQL - Parte III - Alterando Registros
Comentários