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. SintaxeA sintaxe para uma visualização embutida é a seguinte: SELECT "Nome da Coluna" FROM (Visualização_Embutida);
ExemploVamos 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.
Copyright © 2024 1keydata.com Todos os direitos reservados. |