O que é uma View?

 

No Oracle, uma View é uma tabela virtual baseada no resultado de uma consulta SQL. Ela não armazena dados por si só, mas sim uma definição de como exibir os dados que são recuperados de uma ou mais tabelas.

Vantagens de Usar Views

  • Simplificação de Consultas Complexas: Views permitem que consultas complexas sejam encapsuladas em uma única “tabela” virtual, simplificando a consulta para o usuário final.
  • Segurança: Views podem ser usadas para restringir o acesso a dados sensíveis, exibindo apenas as colunas e linhas necessárias para o usuário.
  • Independência de Dados: Alterações na estrutura da base de dados subjacente não precisam refletir nas consultas dos usuários, desde que a View permaneça inalterada.
  • Reutilização de Códigos: Consultas SQL reutilizáveis podem ser armazenadas em Views, facilitando a manutenção e a reutilização do código.

Como Criar uma View

 

A criação de uma View no Oracle é feita através do comando CREATE OR REPLACE VIEW. Veja um exemplo básico:

 

CREATE OR REPLACE VIEW VW_FUNCIONARIOS AS
SELECT f.id,
       f.nome,
       f.data_nascimento,
       f.email,
       f.codigo_cargo,
       c.descricao AS descricao_cargo
  FROM funcionarios f
  JOIN cargos c
    ON f.codigo_cargo = c.codigo;

Neste exemplo, a View vw_funcionarios combina informações das tabelas funcionarios e cargos.

 

Observação: Utilize o alias das tabelas em consultas complexas para evitar erros de coluna ambígua.

Consultando Dados de uma View

 

Consultar dados de uma View é similar a consultar uma tabela normal. Veja um exemplo:

 

SELECT * FROM vw_funcionarios WHERE codigo_cargo = 3;

Conforme mostrado abaixo, esta consulta retorna todos os funcionários do cargo com código 3 (Gerente de Projetos).

 

IDNOMEDATA_NASCIMENTOEMAILCODIGO_CARGODESCRICAO_CARGO
6Fernanda Santos28/09/1983fernanda.santos@example.com3Gerente de Projetos
7Lucas Oliveira15/07/1989lucas.oliveira@example.com3Gerente de Projetos
8Camila Pereira10/04/1985camila.pereira@example.com3Gerente de Projetos

Atualizando Dados através de uma View

 

Nem todas as Views são atualizáveis. Para que uma View seja atualizável, ela deve atender a certos requisitos, como não conter funções agregadas ou subconsultas complexas. Aqui está um exemplo de uma atualização em uma View:

 

UPDATE vw_funcionarios SET codigo_cargo = 2 WHERE id IN (6, 7);

Após a atualização, apenas o funcionário com id 8 (Camila Pereira) permanece no cargo de Gerente de Projetos.

 

IDNOMEDATA_NASCIMENTOEMAILCODIGO_CARGODESCRICAO_CARGO
8Camila Pereira10/04/1985camila.pereira@example.com3Gerente de Projetos

Observação:

  • Lembre-se de que nem todas as Views são atualizáveis. Certifique-se de que a View atende aos requisitos necessários para atualizações.
  • O operador IN utilizado no where é útil para verificar se um valor específico está presente em uma lista de valores. No exemplo acima, estamos atualizando o codigo_cargo para 2 apenas para os funcionários com id 6 e 7. O uso de IN torna a query mais legível e fácil de entender, especialmente quando precisamos trabalhar com múltiplos valores.

Views com Check Option

 

A cláusula WITH CHECK OPTION é uma funcionalidade importante que pode ser utilizada ao criar Views para garantir a integridade dos dados durante operações de inserção e atualização. Quando uma View é criada com WITH CHECK OPTION, qualquer tentativa de inserir ou atualizar dados através dessa View que não satisfaça as condições definidas na consulta da View será rejeitada.

 

Por exemplo, considere a seguinte View que filtra funcionários ativos:

 

CREATE OR REPLACE VIEW VW_FUNCIONARIOS_ATIVOS AS
SELECT "ID",
       "NOME",
       "DATA_NASCIMENTO",
       "EMAIL",
       "CODIGO_CARGO",
       "SALARIO",
       "DATA_ADMISSAO",
       "STATUS",
       "BONUS"
  FROM funcionarios
 WHERE status = 'Ativo' WITH CHECK OPTION;

Com a cláusula WITH CHECK OPTION, qualquer inserção ou atualização feita através de vw_funcionarios_ativos deve resultar em um funcionário cujo status é ‘Ativo’. Isso garante que a View sempre reflita corretamente a condição definida na sua consulta.

Views Materialized

 

Uma Materialized View no Oracle é uma tabela que armazena fisicamente os dados de uma consulta. Diferente das Views normais, que são apenas consultas armazenadas, as Materialized mantêm uma cópia dos dados que podem ser atualizados periodicamente.

 

Exemplo:
Aqui está um exemplo simples de como criar uma Materialized View:

 

CREATE MATERIALIZED VIEW MV_FUNCIONARIOS
REFRESH FORCE ON DEMAND
AS
SELECT f.id,
       f.nome,
       f.data_nascimento,
       f.email,
       f.codigo_cargo,
       f.salario,
       c.descricao AS descricao_cargo
  FROM funcionarios f
  JOIN cargos c
    ON f.codigo_cargo = c.codigo;

Neste exemplo, a Materialized View mv_funcionarios combina informações das tabelas funcionarios e cargos.

Recompilando uma View

 

Às vezes, é necessário recompilar uma View, especialmente após alterações nas tabelas subjacentes. Isso pode ser feito com o comando ALTER VIEW:

 

ALTER VIEW vw_funcionarios COMPILE;

Excluindo uma View

 

Se uma View não for mais necessária, ela pode ser excluída com o comando DROP VIEW:

 

DROP VIEW vw_funcionarios_ativos;

Considerações Finais

 

Views são uma ferramenta poderosa no Oracle para simplificar o acesso a dados, aumentar a segurança e melhorar a manutenção do código SQL. No entanto, é importante entender suas limitações e boas práticas de uso para tirar o máximo proveito dessa funcionalidade.

 

Se quiser saber mais, veja a documentação oficial do Oracle sobre Views para obter informações detalhadas e exemplos práticos.

 

Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima