MySQL Tutorial de subconsulta com exemplos

O que são subconsultas?

Uma subconsulta é uma consulta de seleção contida em outra consulta. A consulta de seleção interna geralmente é usada para determinar os resultados da consulta de seleção externa.

Vejamos a sintaxe da subconsulta –

MySQL Subconsulta

Uma reclamação comum dos clientes na Videoteca MyFlix é o baixo número de títulos de filmes. A gestã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

MySQL Subconsulta

Vamos ver como essa consulta funciona

MySQL Subconsulta

O acima é uma forma de Subconsulta de linha. Nessas 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 pessoas que alugaram um filme e ainda não o devolveram. Depois de obter nomes e números 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 );


MySQL Subconsulta

Vamos ver como essa consulta funciona

MySQL Subconsulta

Nesse caso, a consulta interna retorna mais de um resultado. O acima é do tipo Tcapaz de sub-querery.

Até agora vimos duas consultas, vamos agora ver um exemplo de consulta tripla!!!

Suponha que a administração 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 -

MySQL Subconsulta

Subconsultas versus junções!

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 Junta

Portanto, são frequentemente usados ​​por SQL iniciantes.

Mas as subconsultas apresentam problemas de desempenho. Usar uma junção em vez de uma subconsulta pode, às vezes, aumentar o desempenho em até 500 vezes.

Se puder escolher, é recomendado usar um JOIN em uma subconsulta.


As subconsultas só devem ser usadas como uma solução substituta quando você não puder usar uma operação JOIN para obter o resultado acima.

Subconsultas versus junções

Resumo

  • Subconsultas são consultas incorporadas dentro de outra consulta. A consulta incorporada é conhecida como consulta interna e a consulta do 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 compõem a consulta, o que é muito útil quando Ensaios e depurando as consultas.
  • 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 de tabela podem retornar várias linhas e também colunas.
  • As subconsultas também podem ser usadas em consultas INSERT, UPDATE e DELETE.
  • Para questões de desempenho, quando se trata de obter dados de múltiplas tabelas, é altamente recomendável usar JOINs em vez de subconsultas. Subconsultas só devem ser usadas com um bom motivo.