Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Visões | Alguns Tópicos Adicionais
Técnicas Avançadas em SQL

bookVisões

No capítulo anterior, mencionamos um objeto chamado view ao discutir privilégios de usuário. Agora, vamos analisar esse objeto com mais detalhes.

Uma view em SQL é uma tabela virtual baseada no conjunto de resultados de uma consulta SQL. Ela contém linhas e colunas assim como uma tabela real, e os campos em uma view são campos de uma ou mais tabelas reais no banco de dados.
As views são utilizadas por diversos motivos, incluindo simplificação de consultas complexas, aumento da segurança ao restringir o acesso a dados específicos e apresentação dos dados em um formato específico.

Principais Características das Views

  • Tabela Virtual: Uma view não armazena dados fisicamente. Ela obtém seus dados das tabelas nas quais se baseia (chamadas de tabelas base);
  • Simplificação de Consultas Complexas: As views podem simplificar consultas SQL complexas ao encapsulá-las em uma única view. Isso facilita o trabalho com junções e agregações complexas;
  • Segurança: As views podem restringir o acesso a linhas ou colunas específicas de dados, aumentando a segurança. Usuários podem receber acesso à view sem acesso às tabelas base subjacentes;
  • Consistência: As views podem apresentar uma interface consistente e inalterada, mesmo quando o esquema do banco de dados subjacente é alterado.

Implementação

Será criada uma view chamada account_activity_view baseada nas tabelas BankAccounts e UserLogs que mostra o número da conta, nome do titular, saldo e a ação mais recente realizada na conta.

1234567891011121314151617181920212223242526
-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
copy

Agora é possível utilizar essa view em outras consultas sem recriar a consulta complexa com junções, simplesmente usando a view criada como uma tabela comum.

Nota

Embora possamos usar a view como uma tabela regular, ela não é realmente uma tabela física! Os dados da view não são armazenados em disco. Em vez disso, sempre que utilizamos a view, sua consulta é executada e os dados resultantes são usados na consulta principal.

question mark

Qual das afirmações a seguir melhor descreve o aspecto de segurança das views?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 7

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 4.35

bookVisões

Deslize para mostrar o menu

No capítulo anterior, mencionamos um objeto chamado view ao discutir privilégios de usuário. Agora, vamos analisar esse objeto com mais detalhes.

Uma view em SQL é uma tabela virtual baseada no conjunto de resultados de uma consulta SQL. Ela contém linhas e colunas assim como uma tabela real, e os campos em uma view são campos de uma ou mais tabelas reais no banco de dados.
As views são utilizadas por diversos motivos, incluindo simplificação de consultas complexas, aumento da segurança ao restringir o acesso a dados específicos e apresentação dos dados em um formato específico.

Principais Características das Views

  • Tabela Virtual: Uma view não armazena dados fisicamente. Ela obtém seus dados das tabelas nas quais se baseia (chamadas de tabelas base);
  • Simplificação de Consultas Complexas: As views podem simplificar consultas SQL complexas ao encapsulá-las em uma única view. Isso facilita o trabalho com junções e agregações complexas;
  • Segurança: As views podem restringir o acesso a linhas ou colunas específicas de dados, aumentando a segurança. Usuários podem receber acesso à view sem acesso às tabelas base subjacentes;
  • Consistência: As views podem apresentar uma interface consistente e inalterada, mesmo quando o esquema do banco de dados subjacente é alterado.

Implementação

Será criada uma view chamada account_activity_view baseada nas tabelas BankAccounts e UserLogs que mostra o número da conta, nome do titular, saldo e a ação mais recente realizada na conta.

1234567891011121314151617181920212223242526
-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
copy

Agora é possível utilizar essa view em outras consultas sem recriar a consulta complexa com junções, simplesmente usando a view criada como uma tabela comum.

Nota

Embora possamos usar a view como uma tabela regular, ela não é realmente uma tabela física! Os dados da view não são armazenados em disco. Em vez disso, sempre que utilizamos a view, sua consulta é executada e os dados resultantes são usados na consulta principal.

question mark

Qual das afirmações a seguir melhor descreve o aspecto de segurança das views?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 7
some-alt