O operador lógico OR em SQL é usado em consultas para filtrar dados com base em múltiplas condições. Normalmente, o OR é usado na cláusula WHERE para retornar os resultados que atendem às condições definidas. Essa funcionalidade torna o operador OR uma ferramenta importante para uma recuperação de dados mais flexível.
Neste tutorial, vou mostrar, com exemplos práticos, os diferentes casos de uso do operador OR em consultas SQL. Se você está começando com SQL ou quer atuar como analista de dados, recomendo o curso Introduction to SQL da DataCamp para aprender os fundamentos. O SQL Basics Cheat Sheet também ajuda a consultar operadores e funções comuns para selecionar tabelas, filtrar e agregar dados.
O que é o operador OR em SQL?
O operador OR em SQL é geralmente usado com a cláusula WHERE para filtrar dados. Em uma consulta, o OR inclui as linhas em que pelo menos uma das condições especificadas é verdadeira.
A consulta a seguir retorna todos os registros da tabela employees que estão no departamento de RH ou com salário acima de US$ 60.000. Se uma linha atender a uma ou ambas as condições, ela será incluída no resultado.
-- Select rows where the department is either 'HR' OR salary greater than 60,000
SELECT *
FROM employees
WHERE department = 'HR'
OR salary > 60000;

Exemplo de saída de tabela filtrada usando o operador OR do SQL. Imagem do autor.
Confira o curso Intermediate SQL da DataCamp para aprender mais sobre o operador OR e outros operadores usados no filtro condicional de dados.
Obtenha uma das melhores certificações em SQL
Sintaxe do operador OR em SQL
O operador OR é simples de usar e incorporar em consultas SQL. Veja abaixo a sintaxe básica quando usado em uma instrução SELECT.
SELECT column1, column2, ...
FROM table_name
WHERE condition1
OR condition2
OR condition3;
Observe que você pode usar mais de uma condição OR na cláusula WHERE.
Uso básico em SELECT
O operador OR é usado na instrução SELECT para retornar registros que atendem a qualquer uma das condições fornecidas. Isso torna o OR útil para recuperar registros sem precisar escrever várias consultas complexas.
No exemplo abaixo, o OR filtra todos os funcionários que estão em "New York" ou "Los Angeles".
-- Select employeees from New York or Los Angeles city
SELECT first_name, last_name, city
FROM employees
WHERE city = 'New York'
OR city = 'Los Angeles';
Combinando OR com AND em SQL
É possível combinar o operador OR com o operador AND para formar condições mais complexas em uma consulta SQL. Ao usar ambos, usamos parênteses para controlar a ordem das operações.
Considere a consulta a seguir: queremos selecionar todos os funcionários do departamento de TI e que moram em "New York" (como uma condição), ou que ganham mais de US$ 70.000. Os parênteses agrupam a condição com AND para avaliá-la como uma unidade antes de aplicar o OR.
-- Select columns
SELECT first_name, last_name, department, city, salary
FROM employees
-- Grouping IT department in New York
WHERE (department = 'IT' AND city = 'New York')
-- Employees with salary over 70,000
OR salary > 70000;

Exemplo de saída de tabela filtrada combinando os operadores OR e AND. Imagem do autor.
A consulta acima avalia e retorna registros de:
-
Funcionários que trabalham no departamento de TI e moram em Nova York.
-
Ou qualquer funcionário que ganhe mais de US$ 70.000, independentemente do departamento ou da cidade.
Ao combinar OR com AND, agrupe corretamente as condições com parênteses. Caso contrário, você pode gerar erros lógicos e obter resultados indesejados.
Se os parênteses não forem usados, a condição com AND será avaliada antes da condição com OR. Portanto, usar parênteses corretamente deixa explícita a ordem de avaliação desejada.
Exemplos do operador OR em ação
O operador OR pode ser usado em diferentes consultas SQL para recuperar registros ou manipular dados no banco. Veja a seguir alguns exemplos de uso do OR.
Filtrando dados com múltiplas condições
O OR é usado principalmente para filtrar registros com base em duas ou mais condições. Essa abordagem é útil para ampliar os critérios de busca no banco. O exemplo a seguir filtra e retorna funcionários de New York City ou que ganham mais de US$ 80.000.
-- Select columns
SELECT first_name, last_name, department, city, salary
FROM employees
-- Employees in New York City
WHERE city = 'New York'
-- Employees with salary over 80,000
OR salary > 80000;
Usando OR em instruções INSERT
Você pode usar o operador OR com INSERT para inserir novos registros na tabela se as condições definidas forem atendidas. No exemplo abaixo, a consulta insere um novo registro na tabela employees se o funcionário estiver no departamento de RH ou se ganhar mais de US$ 60.000. A consulta abaixo é válida em SQL Server, MySQL e PostgreSQL.
-- Insert a new record into the 'employees' table
INSERT INTO employees (employee_id, first_name, last_name, department, salary, city)
SELECT 49, 'Anna', 'Johnson', 'HR', 62000, 'New York'
-- First condition: department is 'HR'
WHERE 'HR' = 'HR'
-- Second condition: salary is greater than $60,000
OR 62000 > 60000;
No Oracle, a instrução INSERT é diferente e requer uma cláusula FROM usando a tabela dual, uma tabela especial de uma linha e uma coluna. Faça nosso curso Introduction to SQL Server se você for trabalhar especificamente com SQL Server.
-- Insert a new record into the 'employees' table
INSERT INTO employees (employee_id, first_name, last_name, department, salary, city)
SELECT 49, 'Anna', 'Johnson', 'HR', 62000, 'New York'
FROM dual
WHERE 'HR' = 'HR' -- First condition: department is 'HR'
OR 62000 > 60000; -- Second condition: salary is greater than $60,000
Usando OR na instrução UPDATE
A instrução UPDATE é usada em SQL para alterar registros existentes em uma tabela. Você pode usar o OR em UPDATE para modificar apenas os registros que atendem a múltiplas condições.
No exemplo abaixo, usamos OR para atualizar o salário do funcionário se ele estiver no departamento de Finanças ou morar em Chicago.
-- Update the salary for the employee
UPDATE employees
-- Increase salary by 10%
SET salary = salary * 1.1
-- First condition: department is 'Finance'
WHERE department = 'Finance'
-- Second condition: employees in Chicago City
OR city = 'Chicago';
Usando OR na instrução DELETE
Da mesma forma, a instrução DELETE em SQL remove registros existentes de uma tabela. Você pode usar o OR com DELETE para excluir registros com base em condições específicas.
A consulta abaixo remove registros da tabela employees em que o funcionário é de Chicago ou ganha US$ 60.000.
-- Delete records from the 'employees' table
DELETE FROM employees
-- First condition: employees from Chicago
WHERE city = 'Chicago'
-- Second condition: employees earning 60000
OR salary = 60000;
Considerações de performance em consultas com OR
Ao trabalhar com conjuntos de dados grandes, você pode perceber perdas de performance ao usar o operador OR. Isso pode deixar mais lentas as operações de filtro em bases volumosas. A seguir estão problemas comuns de desempenho e como mitigá-los.
Varredura completa da tabela
Em bases grandes, o uso de OR tende a provocar varreduras completas, especialmente quando não há indexação adequada. Isso pode desacelerar a execução, pois a avaliação é feita linha a linha. Para evitar, indexe as colunas necessárias para que o mecanismo do banco localize os dados com mais rapidez.
Avaliação de condições complexas
Ao avaliar várias condições com OR, a consulta pode ficar significativamente mais lenta, sobretudo sem índices apropriados. Com condições OR complexas, reestruturar a consulta em partes menores, como usando subconsultas, pode ajudar no desempenho.
Condições redundantes
Incluir condições OR desnecessárias pode degradar a performance, já que todas precisam ser avaliadas. Use apenas as condições OR realmente necessárias e com maior chance de serem verdadeiras para simplificar e melhorar a execução.
Alternativas ao operador OR
Se estiver enfrentando problemas de desempenho com OR, considere as alternativas abaixo para filtrar dados com múltiplas condições.
Usando o operador UNION
O operador UNION é usado principalmente para combinar resultados de duas ou mais instruções SELECT quando diferentes indexações são mais adequadas. Na consulta abaixo, UNION combina operações para filtrar e retornar registros de employees do department de TI na city de New York. Leia nosso tutorial UNION vs UNION ALL in SQL se você ainda não está familiarizado com UNION.
-- Use UNION instead of OR for better performance
SELECT first_name, last_name, department, city
FROM employees
-- First condition
WHERE department = 'IT'
UNION
SELECT first_name, last_name, department, city
FROM employees
-- Second condition
WHERE city = 'New York';
Usando CASE
A expressão CASE é uma alternativa importante ao OR quando você quer incluir lógica condicional na consulta. O CASE pode melhorar a performance conforme sua execução otimizada. A consulta abaixo usa CASE para categorizar departamentos com base em múltiplas condições.
-- Select first name, last name, and a derived category based on conditions
SELECT first_name, last_name,
-- Use CASE to determine the category based on department or city
CASE
-- If department is 'IT', categorize as 'Tech' If city is 'New York', categorize as 'NYC'
WHEN department = 'IT' THEN 'Tech'
WHEN city = 'New York' THEN 'NYC' --
ELSE 'Other'
END AS category
FROM employees;
Confira nossa trilha de habilidades SQL Fundamentals para aprender mais sobre o operador UNION e a expressão CASE para manipulação de dados.
Torne-se certificado em SQL
Conclusão
O operador OR é versátil para criar consultas flexíveis e complexas em SQL. Com ele, você filtra registros de tabela com base em múltiplas condições. Como vimos, quando usado com outras instruções como INSERT, UPDATE e DELETE, o OR também permite modificar registros nas tabelas. Como analista de dados, é importante entender os possíveis impactos de performance do OR e alternativas como o operador UNION e expressões CASE WHEN.
Recomendo que você pratique o uso do OR para filtrar registros em diferentes conjuntos de dados até se sentir confiante com a funcionalidade. Para levar suas habilidades de SQL para o próximo nível, confira nossa trilha de carreira Associate Data Analyst in SQL e torne-se um analista de alta performance. O curso Reporting in SQL também vai ajudar você a analisar e apresentar dados em dashboards. Por fim, recomendo obter a SQL Associate Certification da DataCamp para comprovar suas competências em SQL para análise de dados.
Perguntas frequentes sobre SQL
Qual é a diferença entre os operadores OR e AND em SQL?
O operador OR retorna resultados se qualquer uma das condições especificadas for verdadeira, enquanto o operador AND retorna resultados apenas quando todas as condições são verdadeiras.
Posso usar o operador OR junto com AND em uma mesma consulta?
Você pode usar juntos os operadores OR e AND para filtrar registros com base em múltiplas condições. No entanto, use parênteses para agrupar as condições e definir a ordem de execução da consulta.
Existem limitações para a quantidade de condições com OR em SQL?
Não há limite para a quantidade de condições a filtrar usando OR, embora condições demais possam impactar a performance da consulta.
Posso usar o operador OR para modificar dados nas tabelas?
Você pode usar o operador OR com as instruções INSERT, UPDATE e DELETE para modificar registros específicos na tabela.
Quais são as alternativas ao operador OR em SQL?
O operador UNION e expressões CASE WHEN são alternativas ao OR para filtrar registros com base em múltiplas condições.

