Precedência de AND/OR e uso de parênteses
Conheça o erro de filtragem mais comum que os entrevistadores inserem nas perguntas.
Precedência de AND/OR e uso de parênteses é uma aula grátis de SQL Interview Prep no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Interview Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Interview Prep inclui 4 aulas no total.
A armadilha que os entrevistadores preparam
O erro de filtragem mais comum em entrevistas parece correto à primeira vista. A solicitação é: encontre os pedidos do cliente 5 que estejam pendentes ou enviados. O candidato escreve um WHERE misturando AND e OR e obtém linhas extras.
Por quê? Porque AND tem precedência maior que OR. O banco de dados avalia primeiro todos os pares de AND e depois os OR. Esta lição torna essa regra automática, para que você nunca perca pontos por causa dela.
Precedência dos operadores em uma frase
Em todo dialeto SQL, os operadores lógicos são avaliados nesta ordem: NOT primeiro, depois AND e, por último, OR.
NOTtem a precedência mais altaANDtem precedência intermediáriaORtem a precedência mais baixa
Assim, A OR B AND C é interpretado como A OR (B AND C), nunca como (A OR B) AND C. O entrevistador conta que você se esqueça disso.
A consulta com erro
Esta é a consulta que um candidato escreve para cliente 5, status pendente ou enviado. Ela parece correta, mas está errada.
Como AND tem precedência maior, o SQL a interpreta como (customer_id = 5 AND status = 'pending') OR status = 'shipped'. O segundo ramo não tem filtro de cliente algum, portanto retorna pedidos enviados de todos os clientes.
SELECT *
FROM orders
WHERE customer_id = 5
AND status = 'pending'
OR status = 'shipped';A correção: parênteses
Coloque o ramo de OR entre parênteses para que o filtro de cliente se aplique aos dois status. Os parênteses substituem a precedência e tornam a intenção explícita.
Agora o SQL avalia primeiro o OR agrupado e depois aplica customer_id = 5 ao grupo inteiro. Revisores experientes adicionam parênteses mesmo quando a precedência já produz o resultado correto, apenas para melhorar a legibilidade.
SELECT *
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');Percorrendo a tabela-verdade
Considere um pedido enviado do cliente 9. Acompanhe a versão com erro:
customer_id = 5é falsostatus = 'pending'é falsofalse AND falseé falsofalse OR (status = 'shipped' is true)é verdadeiro
A linha é retornada mesmo não sendo do cliente 5. Explicar em voz alta o percurso de uma linha concreta é exatamente o que os entrevistadores querem ver.
NOT tem a maior precedência
NOT se aplica somente à condição imediatamente posterior. Portanto, NOT status = 'open' AND priority = 'high' significa (NOT status = 'open') AND priority = 'high'.
Se a intenção era negar tudo, você deve usar parênteses: NOT (status = 'open' AND priority = 'high'). Pela lei de De Morgan, isso equivale a status <> 'open' OR priority <> 'high'.
SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');Um exemplo com três condições
Encontre produtos que sejam (eletrônicos ou eletrodomésticos) e estejam em estoque. Sem os parênteses, o filtro de estoque se aplicaria apenas aos eletrodomésticos.
A consulta agrupada abaixo é fácil de ler: escolha uma de duas categorias e, em seguida, exija que haja estoque. Regra prática: sempre que uma consulta combinar AND com OR, quase sempre será necessário colocar parênteses ao redor do grupo com OR.
SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
AND in_stock = true;IN como alternativa mais clara
Uma longa sequência de OR na mesma coluna é propensa a erros e verbosa. Substitua-a por IN, que é inequívoco e não precisa de parênteses.
A consulta abaixo é exatamente equivalente à anterior, mas é mais difícil de errar. Entrevistadores gostam de ver essa refatoração porque ela demonstra que você entende tanto de correção quanto de legibilidade.
SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
AND in_stock = true;Precedência em filtros calculados
A precedência também se aplica quando aritmética e lógica se misturam. Em price * 1.2 > 100 OR discount = 0 AND active = true, a comparação e a aritmética são resolvidas primeiro, depois AND e, por fim, OR.
Assim, a leitura é (price * 1.2 > 100) OR ((discount = 0) AND (active = true)). Quando houver dúvida, não tente memorizar a tabela sob pressão; basta colocar parênteses em cada grupo.
Como responder na hora
Quando um entrevistador mostrar um filtro misto de AND/OR e perguntar o que isso retorna, faça três coisas:
- Declare a regra de precedência:
ANDantes deOR - Reescreva a consulta com parênteses em voz alta para revelar seu agrupamento real
- Acompanhe uma linha que revele o erro
Depois, apresente a versão corrigida e com parênteses. Essa sequência demonstra rigor de nível sênior.
Hábito defensivo
O hábito profissional é: coloque parênteses em todo grupo com OR, sempre. Isso custa dois caracteres e elimina uma categoria inteira de erros e comentários de revisão.
Revisores de código nunca deveriam precisar avaliar mentalmente a precedência para confirmar que um filtro está correto. Torne o agrupamento visível. Este é um dos poucos casos em que a sintaxe redundante é considerada uma boa prática por todos.
SELECT order_id, status
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');Verificação rápida
Pense na regra de precedência antes de responder.
Resumo
Principais conclusões:
- A precedência lógica é NOT, depois AND, depois OR
- Filtros que misturam
AND/ORquase sempre precisam de parênteses ao redor do grupo comOR - A ausência de um parêntese amplia os resultados silenciosamente, muitas vezes eliminando completamente um filtro
- Substitua sequências longas de
ORem uma coluna porIN - Para responder na hora: declare a regra, recoloque os parênteses, acompanhe uma linha e depois corrija
Coloque sempre parênteses nos grupos com OR, mesmo quando a precedência já produzir o resultado esperado.
Perguntas Frequentes
A aula “Precedência de AND/OR e uso de parênteses” é grátis?
Sim — o texto completo de “Precedência de AND/OR e uso de parênteses” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Interview Prep, atualize para CoddyKit PRO. O curso de SQL Interview Prep inclui 4 aulas no total.
O que vou aprender em “Precedência de AND/OR e uso de parênteses”?
Conheça o erro de filtragem mais comum que os entrevistadores inserem nas perguntas. Você pratica SQL Interview Prep com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar SQL Interview Prep?
Nenhuma experiência prévia é necessária. SQL Interview Prep no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Precedência de AND/OR e uso de parênteses”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de SQL Interview Prep?
Sim. Cada aula de SQL Interview Prep inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Precedência de AND/OR e uso de parênteses
- BETWEEN, IN e limites inclusivos
- LIKE, curingas e escape
- Filtrando por valores calculados