Tutorial de subconsulta do MySQL com exemplos

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

O acima é uma forma de Sub-Consulta 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 T able sub-quer e.

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, subconsultas escalares, de linha e de 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.