Tutorial de subconsultas de MySQL

Autor: Morris Wright
Data De Criação: 25 Abril 2021
Data De Atualização: 23 Novembro 2024
Anonim
Curso SQL. Subconsultas I. Vídeo 10
Vídeo: Curso SQL. Subconsultas I. Vídeo 10

Contente

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.


Use subconsultas para criar sentenças mais legíveis e compactas (Thinkstock Images/Comstock/Getty Images)

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.