Visõ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;
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.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 4.35
Visõ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;
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.
Obrigado pelo seu feedback!