8th Jul 2022 6 minutos de leitura O que é uma Consulta SQL Inline? Kamil Bladoszewski sql aprender sql subconsulta Índice Subquery vs. Visualizações em linha Então, o que é uma Consulta em Linha? Exibições em linha fora do Oracle Vistas em linha vs. Subconsultas O quanto os nomes são importantes? Não muito! Você já ouviu o termo "consulta inline"? Como elas são diferentes de subconsultas e tabelas derivadas? Você já procurou isto em vários lugares e ainda não sabe a resposta? Vamos embarcar em uma viagem e descobrir juntos! A primeira vez que ouvi o termo "consulta inline", fiquei um pouco surpreso. Não soa como uma das nuances do SQL e eu pensei que conhecia todos os conceitos básicos. Infelizmente, o googling do termo não foi muito útil - houve apenas alguns poucos resultados e todas as respostas foram vagas. Demorei algum tempo para fazer a pesquisa adequada e aprender sobre consultas em SQL. É por isso que decidi escrever este artigo e reunir tudo o que aprendi em um só lugar. Subquery vs. Visualizações em linha Você já ouviu falar de uma subquisição? É uma pergunta dentro de uma consulta - pelo menos na terminologia que me foi ensinada. A seguir, há a frase inline view. Uma visão inline é uma consulta na cláusula FROM de outra consulta. Como aprendi, isto faz com que seja o mesmo que uma subconsulta. No Oracle, porém, as consultas inline são colocadas somente na cláusula FROM, enquanto as subconsultas estão nas cláusulas SELECT ou WHERE. (Veja subconsulta nas FAQs do Oracle e visão inline nas FAQs do Oracle.) Em outras palavras, a Oracle trata estes dois conceitos como dois conceitos separados. Assim, se você aprendeu sobre subconsultas fora da Oracle, você será capaz de entender as visões inline. Entretanto, você deve se lembrar que os usuários Oracle podem interpretá-lo mal se você usar os termos subconsultas e visões inline de forma intercambiável. Não vamos gastar mais tempo com subconsultas agora. Se você não estiver familiarizado com elas, recomendo que leia o Subconsultas SQL artigo no blog LearnSQL.com.br para uma visão geral básica do tópico. Então, o que é uma Consulta em Linha? Uma consulta inline é uma consulta na cláusula FROM. Você seleciona os dados a partir dela como faria com uma tabela. Vamos dar uma olhada em um exemplo de uma consulta inline. Vamos trabalhar com alguns dados de filmes de um site onde as pessoas classificam os filmes que assistiram: movie - Contém informações sobre filmes: id - Uma identificação única para cada filme. title - O título do filme. year - Quando o filme foi lançado. director_id - O ID do diretor desse filme. rating - Armazena classificações de usuários para filmes: id - Uma identificação única para cada classificação. rating - Um número de 1 (que significa "é tão ruim que mostrar este filme deveria ser ilegal") a 10 (que significa "eu poderia assistir a este filme pelo resto da minha vida, 24/7"). movie_id - o ID do filme classificado. user_id - o ID do usuário que classificou o filme. movie idtitleyeardirector_id 1The Lord of the Rings: The Return of the King200314 2Mad Max: Fury Road201569 3Avengers: Endgame201971 rating idratingmovie_iduser_id 171332 261469 3101767 4101111 58184 622417 772441 8102118 95274 1022630 1110399 1243189 1373887 1483521 1543144 A consulta mostrará a maior média de classificação do filme. Dê uma olhada: SELECT MAX(avg_rating) AS max_avg_rating FROM ( SELECT AVG(rating) AS avg_rating FROM rating GROUP BY movie_id ) AS avg_movie_ratings; max_avg_rating 8.2 Na cláusula FROM, usamos a visualização inline (chamada avg_movie_ratings e mostrada em negrito) para calcular a classificação média de cada filme. Então, a partir das médias, selecionamos o maior valor. A visualização inline que usamos funciona como uma tabela temporária. Exibições em linha fora do Oracle Como já mencionei antes, a visão em linha é um termo bastante Oracle. Eu também tropecei nele enquanto lia sobre o MySQL; entretanto, algumas pessoas se referiram a ele como uma visão em linha e outras como uma subconsciência. Em outros motores de banco de dados, as visões inline têm nomes diferentes. Por exemplo, no MS SQL Server, uma subconsulta em uma cláusula FROM é chamada de tabela derivada. Você provavelmente já notou que estou usando o termo subconsulta aqui. Isto porque subquery (ou às vezes subquery) é o nome usado no PostgreSQL - o motor de banco de dados que mais uso. Este nome também é usado pela maioria dos usuários do MySQL. Não importa o que você esteja chamando de inline views, lembre-se - é apenas o nome de um conceito. Não importa realmente como você o está chamando. O importante é saber como utilizar corretamente o conceito em suas consultas. Vistas em linha vs. Subconsultas Voltemos à terminologia da Oracle por um momento. Qual é a diferença entre visões em linha e subconsultas (Ver subconsultas em Oracle FAQs) se em alguns motores eles têm o mesmo nome? Mesmo que pareçam semelhantes, eles funcionam de maneira diferente. Vamos nos concentrar nas duas maiores diferenças. A primeira diferença é que as visões inline podem conter várias colunas, enquanto as subconsultas (no significado de Oracle) devem retornar apenas uma. A razão é simples - uma vista inline funciona como uma tabela e as tabelas podem conter mais de uma coluna. As subconsultas, por outro lado, geralmente funcionam como um único valor. A segunda é a correlação. Em visualizações não em linha, pode-se usar um valor para a consulta externa (principal). Dessa forma, sua subconsulta pode retornar um valor diferente para linhas diferentes. Este conceito é muito poderoso e pode poupar seu tempo quando você escreve consultas complicadas. Leia mais sobre isso em Subconsulta Correlata em SQL: Um Guia para Iniciantes no blog LearnSQL.com.br . Se você acha que precisa de mais informações sobre o tópico e os diferentes tipos de subgrupos (incluindo visualizações em linha), confira o artigo Quais são os diferentes tipos de subconsultas em SQL?. O quanto os nomes são importantes? Não muito! Como já mencionei, não importa se você chama o conceito de visão em linha, tabela derivada, subconsulta, ou subconsulta. Tudo se resume ao seu conhecimento e ao uso desta poderosa técnica SQL. É claro que, ao se comunicar com os outros, você deve fazer o melhor possível para evitar mal-entendidos. É por isso que vale a pena conhecer todos os diferentes nomes sob os quais este conceito se enquadra. Entretanto, se sua equipe concordar, a visão inline pode ser chamada de in-part thingamajig - desde que todos saibam do que você está falando! Se você nunca ouviu falar do conceito, talvez queira verificar o SQL para Iniciantes curso em LearnSQL.com.br. Se você já aprendeu sobre isso, mas não se sente muito confiante em suas habilidades, você pode querer resolver alguns exercícios do Curso de Práticas em SQL. Só esperamos que você não se importe que chamemos o conceito de subquisição. Tags: sql aprender sql subconsulta