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 –
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
Vamos ver como essa consulta funciona
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 );
Vamos ver como essa consulta funciona
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 -
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.
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.