As views (ou também visões) são recursos bastante úteis em bancos de dados relacionais, pois permitem a criação de representações lógicas dos dados armazenados em tabelas, facilitando a consulta, segurança e manutenção.
Mas o que exatamente são as views?
Uma view pode ser entendida como uma tabela virtual que se baseia no resultado de uma consulta, ou seja, ao invés de armazenar os dados diretamente ela apenas exibe os dados pertencentes a outras tabelas. Estes dados são recuperados através de uma instrucão SQL toda vez que a view é executada.
De acordo com a documentação da versão 19c do Oracle, temos:
Use the CREATE VIEW statement to define a view, which is a logical table based on one or more tables or views. A view contains no data itself. The tables upon which a view is based are called base tables.
Vantagens ao utilizar views
– Simplicar consultar complexas
A utilização de views possibilita que uma query complexa seja encapsulada em uma query simples.
– Segurança no acesso aos dados
Através da utilização de views é possível restringir o acesso a colunas ou linhas específicas, podendo assim exibir somente os dados necessários.
– Abstração
Com as views é possível implementar uma camada de abstração que permite ocultar tanto a estrutura das tabelas ou até mesmo a fonte dos dados.
– Reutilização de consulta
Para consultas que são utilizadas com certa frequência é indica a criação de views para reduzir a repetição de código.
Tipos de Views no Oracle
Views
Podem ter desde uma estrutura simplificada baseada em apenas uma tabela e sem funções de agregações e joins ou até mesmo mais complexas com joins entre multiplas tabelas, funções de agregação, subconsultas, etç.
As views com estrutura simples geralmente permitem que sejam feitas inserções e alterações nos dados da tabela de origem.
Já as views que não permitem inserções e alterações são as que possuem clasulas como DISTINCT, funções de agregação, GROPU BY, ORDER BY, sub queries no select, condições recursivas com a clásula WITH, etç.
Independente da estrutura da view, ela não ocupa espaço em disco.
Mais informações disponíveis em https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/UPDATE.html
Exemplo:
CREATE VIEW vw_empresas AS
SELECT id, nome_empresa
FROM empresas;
Materialized Views
Já as materialized views (views materializadas) armazenam os dados fisicamente, ou seja, ela irá consumir espaço em disco.
As materialized views podem ser usadas para melhorar a performance em consultas complexas ou consultas que envolvam grandes volumes de dados.
Também é possível utiliá-las para transportar ou replicar dados para outros bancos de dados oracle através de database links.
As MVs podem ser atualizadas periodicamente ou sob demanda e podem ser totalmente reconstruídas a cada atualização ou de maneira incremental com a utilização de mlogs (materialized view logs).
Exemplo:
CREATE MATERIALIZED VIEW mv_vendas
REFRESH FAST ON COMMIT
AS
SELECT produto_id, SUM(quantidade) AS total_vendido
FROM vendas
GROUP BY produto_id;