SQL Visualização Embutida (Inline View)




SQL > Linguagem SQL avançada > Visualização Embutida

Uma visualização embutida é uma declaração SELECT na cláusula FROM. Uma visualização é uma tabela virtual que possui características de uma tabela, mas não contém dados reais. Em uma construção de visualização embutida, em vez de especificar o nome ou os nomes das tabelas após a palavra-chave FROM, a fonte dos dados na verdade vem da visualização embutida.

Uma visualização embutida é às vezes chamada de tabela derivada. Esses dois termos são usados de forma intercambiável.

Sintaxe

A sintaxe para uma visualização embutida é a seguinte:

SELECT "Nome da Coluna" FROM (Visualização_Embutida);

Exemplo

Vamos supor que temos duas tabelas: A primeira tabela é User_Address, que mapeia cada usuário para um código ZIP; a segunda tabela é User_Score, que registra todas as pontuações de cada usuário. A pergunta é: como escrever uma consulta SQL para encontrar o número de usuários que pontuaram mais de 200 para cada código ZIP?

Sem usar uma visualização embutida, podemos realizar isso em dois passos:

Consulta 1

CREATE TABLE User_Higher_Than_200
SELECT User_ID, SUM(Score) FROM User_Score
GROUP BY User_ID
HAVING SUM(Score) > 200;

Consulta 2

SELECT a2.ZIP_CODE, COUNT(a1.User_ID)
FROM User_Higher_Than_200 a1, User_Address a2
WHERE a1.User_ID = a2.User_ID
GROUP BY a2.ZIP_CODE;

No código acima, introduzimos uma tabela temporária, User_Higher_Than_200, para armazenar a lista de usuários que pontuaram mais de 200. User_Higher_Than_200 é então usada para fazer um JOIN com a tabela User_Address para obter o resultado final.

Podemos simplificar o SQL acima usando a construção de visualização embutida da seguinte maneira:

Consulta 3

SELECT a2.ZIP_CODE, COUNT(a1.User_ID)
FROM
(SELECT User_ID, SUM(Score) FROM User_Score GROUP BY User_ID HAVING SUM(Score) > 200) a1,
User_Address a2
WHERE a1.User_ID = a2.User_ID
GROUP BY a2.ZIP_CODE;

O código em vermelho representa uma visualização embutida. Existem duas vantagens em usar uma visualização embutida aqui:

1. Não precisamos criar a tabela temporária. Isso impede que o banco de dados tenha muitos objetos, o que é positivo, pois cada objeto adicional no banco de dados custa recursos para gerenciar.

2. Podemos usar uma única consulta SQL para alcançar o que desejamos.

Observe que tratamos a visualização embutida exatamente da mesma forma que tratamos uma tabela. Comparando a Consulta 2 e a Consulta 3, vemos que a única diferença é que substituímos o nome da tabela temporária na Consulta 2 pela declaração de visualização embutida na Consulta 3. Todo o resto permanece igual.

SQL INTERSECT >>

Esta página foi atualizada pela última vez em 27/12/2023



Copyright © 2024   1keydata.com   Todos os direitos reservados.