VIEWS
Bom, voltei essa semana para a facul, e tive uma aulinha sobre VIEWS. Achei bem interessante
e resolvi criar um tópico para explicar rapidamente como funciona.
Views nada mais é que uma forma de comprimir seu select, resumidamente falando.
Quais as vantagens? Segurança (pois você pode dar permissões de acesso para suas views),
agilidade/facilidade, e organização. Esse é o meu ver sobre Views. Porém vou deixar uma referência com mais detalhes abaixo.
~
CREATE VIEW ~
Bom, primeiramente, vou deixar o link de 2 entidades a serem criadas no final do tópico, para você poder seguir os passos do tutorial.
No caso são: LOC_FUNCIONARIO e LOC_DEPTO (departamento).
Nesse exemplo vamos encapsular um select dentro da view.
O select será simples! Vamos exibir um rank de soma de salarios, dos departamentos.
Seria um top 5. Para isso, vamos usar o rownum. Porém, para usar o rownum, temos que criar uma subquery..
Veja como ficará
SELECT * FROM (
SELECT D.NM_DEPTO, sum(F.VL_SALARIO) Total
FROM LOC_FUNCIONARIO F, LOC_DEPTO D
WHERE F.CD_DEPTO = D.CD_DEPTO
GROUP BY D.NM_DEPTO
ORDER BY Total desc)
WHERE ROWNUM <6
Não usei joins nesse exemplo, podem usar se quiser.
Veja que usei um group by, pois fiz o sum do VL_SALÁRIO.
Agora, vamos à parte mais facil, criar a VIEW.
Veja um exemplo de como criar uma VIEW:
CREATE OR REPLACE VIEW WC_RANK_SAL_DEPTO AS
(
-- Aqui ficará o seu select
);
Então ficará assim...
CREATE OR REPLACE VIEW VW_RANK_SAL_DEPTO AS
(
SELECT * FROM (
SELECT D.NM_DEPTO, sum(F.VL_SALARIO) Total
FROM LOC_FUNCIONARIO F, LOC_DEPTO D
WHERE F.CD_DEPTO = D.CD_DEPTO
GROUP BY D.NM_DEPTO
ORDER BY Total desc)
WHERE ROWNUM <6
);
Beleza, View criada! Como vamos acessa-la?
Veja no exemplo abaixo
SELECT * FROM WC_RANK_SAL_DEPTO;
Apenas fazendo um select na view.
Talvez algum erro ocorra, pois exportei apenas 2 tabelas de um projeto inteiro do meu banco..
Mas serve como exemplo, você pode usar as views tanto para seus projetos em banco, quanto aplicações!
Isso facilita bastante. Vou deixar mais uma referencia, para dar permissoes de views.. (pro povinho já acostumado)
[Oracle] Permissão para View Package / Package Body Oracle 10g | Certificação BD
Querys!
Qualquer dúvida, poste que eu vou pesquisar ao máximo para tentar resolver!
Lembrando que estou aprendendo isso agora, não sou expert nem nada haha
Abraços