O que são subconsultas?
Uma subconsulta é uma consulta selecionada que está contida em outra consulta. A consulta de seleção interna geralmente é usada para determinar os resultados da consulta de seleção externa.
Vamos dar uma olhada na sintaxe da subconsulta -
Uma reclamação comum dos clientes na Biblioteca de Vídeos MyFlix é o baixo número de títulos de filmes. A administração quer comprar filmes para uma categoria que tenha menor número de títulos.
Você pode usar uma consulta como
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);
Dá um resultado
Vamos ver como essa consulta funciona
A descrição acima é uma forma de Subconsulta de Linha . Em tais subconsultas, a consulta interna pode fornecer apenas UM resultado. Os operadores permitidos ao trabalhar com subconsultas de linha são [=,>, =, <=,,! =,]
Vejamos outro exemplo,
Suponha que você queira nomes e números de telefone de membros de pessoas que alugaram um filme e ainda não os devolveram. Depois de obter os nomes e o número de telefone, você liga para eles para avisar. Você pode usar uma consulta como
SELECT full_names,contact_number FROM members WHERE membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );
Vamos ver como essa consulta funciona
Nesse caso, a consulta interna retorna mais de um resultado. O acima é um tipo de sub-consulta de tabela .
Até agora vimos duas consultas, vamos ver um exemplo de consulta tripla !!!
Suponha que a gerência queira recompensar o membro que paga mais
Podemos executar uma consulta como
Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));
A consulta acima fornece o seguinte resultado -
Sub-consultas Vs Joins!
Quando comparadas com Joins, as subconsultas são simples de usar e fáceis de ler. Eles não são tão complicados quanto as junções
Portanto, são freqüentemente usados por iniciantes em SQL.
Mas as subconsultas têm problemas de desempenho. Usar uma junção em vez de uma subconsulta pode, às vezes, dar a você um aumento de desempenho de até 500 vezes.
Se houver escolha, é recomendável usar JOIN em uma subconsulta.
As subconsultas devem ser usadas apenas como uma solução de fallback quando você não pode usar uma operação JOIN para alcançar o acima
Resumo
- Subconsultas são consultas embutidas em outra consulta. A consulta incorporada é conhecida como consulta interna e a consulta de contêiner é conhecida como consulta externa.
- As subconsultas são fáceis de usar, oferecem grande flexibilidade e podem ser facilmente divididas em componentes lógicos únicos que constituem a consulta, o que é muito útil ao testar e depurar as consultas.
- O MySQL suporta três tipos de subconsultas: escalar, subconsulta de linha e tabela.
- As subconsultas escalares retornam apenas uma única linha e uma única coluna.
- As subconsultas de linha retornam apenas uma única linha, mas podem ter mais de uma coluna.
- As subconsultas da tabela podem retornar várias linhas, bem como colunas.
- As subconsultas também podem ser usadas em consultas INSERT, UPDATE e DELETE.
- Para problemas de desempenho, quando se trata de obter dados de várias tabelas, é altamente recomendável usar JOINs em vez de subconsultas. As subconsultas devem ser usadas apenas por um bom motivo.