Tutorial de subconsultas de MySQL

Escrito por kristen waters | Traduzido por josé fabián
  • Compartilhar
  • Tweetar
  • Compartilhar
  • Pin
  • E-mail
Tutorial de subconsultas de MySQL
Use subconsultas para criar sentenças mais legíveis e compactas (Thinkstock Images/Comstock/Getty Images)

Subconsultas são consultas aninhadas dentro de outra. Elas permitem separar parte da sentença e oferecer uma alternativa mais legível às operações que poderiam precisar de "joins" e "unions" complexos. As subconsultas em MySQL podem devolver um valor, uma linha, uma coluna ou uma tabela de dados.

Outras pessoas estão lendo

A sintaxe

A sintaxe básica de uma subconsulta é a seguinte:

SELECT * FROM tabela1 WHERE colunaA = (SELECT colunaB FROM tabela2) GO

As subconsultas devem consistir em uma sentença "SELECT", "INSERT", "UPDATE", "DELETE", "SET" ou "DO", e você não pode alterar a tabela e usá-la dentro da subconsulta ao mesmo tempo. As subconsultas normalmente são usadas no lado direito da cláusula "WHERE", que pode conter qualquer dos operadores de comparação e de lógicas, como = (igual), <> (diferente), <= (menor ou igual), >= (maior ou igual), < (menor), > (maior), "BETWEEN" (entre dois valores), "NOT" (não lógico), "AND" (e lógico) e "OR" (ou lógico). Também podem ser usadas as palavras-chave "DISTINCT", "GROUP BY", "ORDER BY" e "LIMIT" e até mesmo combinadas com sentenças "JOIN". Fora as restrições detalhadas, há poucas limitações na hora de escrever subconsultas em MySQL.

Não há nem sequer uma restrição no número de subconsultas feitas dentro de uma sentença. Você pode encontrar mais informações sobre subconsultas no manual de referência do MySQL (veja a seção "Recursos").

Exemplo

Suponha que você tenha duas tabelas: Uma com o nome, sobrenome, endereço e CEP de membros de uma lista de correio, e uma com cidades, estados e CEP. Para encontrar os nomes dos membros que vivem em Brasília, pode-se usar múltiplas sentenças "select". A primeira delas buscará os CEPs de Brasília:

SELECT cep FROM códigoscep WHERE estado = "BRASÍLIA" GO

Depois, use um "select" para cada CEP encontrado:

SELECT nome, sobrenome FROM endereços WHERE cep = [códigocep] GO

Esse método é demorado e fácil de cometer erros. É fácil perder um CEP, especialmente se houver muitos deles. Uma forma mais fácil de completar esta tarefa é usar a primeira sentença como uma subconsulta dentro da segunda:

SELECT nome, sobrenome FROM endereços WHERE cep = (SELECT cep FROM códigoscep WHERE estado = "BRASÍLIA") GO

Essa consulta mostrará todos os membros da sua lista de correio que vivem em Brasília.

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível