MySQL: Uma explicação detalhada sobre os operadores e…

Última atualização: 2026-08-26

Os operadores são a base das consultas SQL — todas as condições em uma cláusula WHERE dependem deles.

Esta aula oferece uma visão geral sistemática de todos os operadores do MySQL e seus casos de uso.

100%
graph TB
    A[MySQL Operators] --> B[Arithmetic Operators<br/>+ - * / DIV %]
    A --> C[Comparison Operators<br/>= != > < BETWEEN LIKE IN]
    A --> D[Logical Operators<br/>AND OR NOT XOR]
    A --> E[Bitwise operators<br/>& | ^ ~ << >>]
    C --> C1[BETWEEN Scope]
    C --> C2[IN List]
    C --> C3[LIKE Blurred]
    C --> C4[IS NULL Null value]
    C --> C5[<=> Safety equals]

1. O que você vai aprender


2. A história real por trás de uma reportagem

(1) Problema: Critérios de filtragem inseridos incorretamente

Um especialista em operações deseja consultar “pedidos dos últimos 30 dias com valor superior a 100 e cujo status não seja ‘cancelado’”:

SQL
-- Incorrect Formulation
SELECT * FROM orders 
WHERE order_date > '2026-06-03' AND amount > 100 AND status != 'cancelled';

-- Missed: status could be NULL

(2) Resolução de equações com operadores

SQL
-- Correct Way: Handle NULL
SELECT * FROM orders 
WHERE order_date > DATE_SUB(CURDATE(), INTERVAL 30 DAY)
  AND amount > 100
  AND (status != 'cancelled' OR status IS NULL);

Vantagens: Nenhum valor NULL é omitido, garantindo resultados precisos nas consultas.


3. Operadores aritméticos

Operador Descrição Exemplo
+ Adição SELECT 1 + 1; → 2
- Subtração SELECT 5 - 3; → 2
* Multiplicação SELECT 2 * 3; → 6
/ Divisão SELECT 10 / 3; → 3,3333
DIV Divisão inteira SELECT 10 DIV 3; → 3
% Módulo SELECT 10 % 3; → 1
MOD Módulo SELECT MOD(10, 3); → 1

▶ Exemplo: Operações aritméticas

SQL
-- Calculate the total order amount
SELECT 
    product_name,
    price,
    quantity,
    price * quantity AS total
FROM order_items;

-- Calculate the discounted price
SELECT 
    product_name,
    original_price,
    discount_rate,
    original_price * (1 - discount_rate / 100) AS sale_price
FROM products;
▶ Experimente

Saída:

TEXT 📖 Somente leitura
+--------------+-------+----------+-------+
| product_name | price | quantity | total |
+--------------+-------+----------+-------+
| iPhone       | 999   |        2 | 1998  |
| MacBook      | 1999  |        1 | 1999  |
+--------------+-------+----------+-------+

4. Operadores de comparação

Operador Descrição Exemplo
= é igual a WHERE id = 1
<> ou != Não é igual a WHERE status != 'deleted'
< Menos que WHERE age < 18
> Maior que WHERE price > 100
<= Menor ou igual a WHERE score <= 60
>= Maior ou igual a WHERE amount >= 1000
Escopo BETWEEN WHERE age BETWEEN 18 AND 30
IN Lista WHERE status IN ('active', 'pending')
LIKE Correspondência aproximada WHERE name LIKE 'J%'
IS NULL É nulo WHERE email IS NULL
IS NOT NULL Não é nulo WHERE email IS NOT NULL
<=> Seguro equivale a NULL <=> NULL → 1

▶ Exemplo: Consulta de intervalo BETWEEN

SQL
-- Check prices between 100 and 500
SELECT * FROM products WHERE price BETWEEN 100 AND 500;

-- Equivalent to
SELECT * FROM products WHERE price >= 100 AND price <= 500;

-- Query orders within a specific date range
SELECT * FROM orders WHERE order_date BETWEEN '2026-01-01' AND '2026-06-30';
▶ Experimente

▶ Exemplo: Consulta de lista IN

SQL
-- Query Orders with a Specific Status
SELECT * FROM orders WHERE status IN ('pending', 'paid', 'shipped');

-- Equivalent to
SELECT * FROM orders WHERE status = 'pending' OR status = 'paid' OR status = 'shipped';

-- Search for employees in a specific department
SELECT * FROM employees WHERE department_id IN (1, 3, 5, 7);
▶ Experimente

▶ Exemplo: Correspondência aproximada com LIKE

SQL
-- % Match any number of characters
SELECT * FROM users WHERE name LIKE 'J%';       -- Starts with J
SELECT * FROM users WHERE name LIKE '%son';     -- Ends with son
SELECT * FROM users WHERE name LIKE '%john%';   -- Contains john

-- _ Match a single character
SELECT * FROM users WHERE phone LIKE '138____1111'; -- Positions 4-7 can be any digit

-- ESCAPE Escape
SELECT * FROM files WHERE name LIKE '%\%%' ESCAPE '\\'; -- Contains %
▶ Experimente

▶ Exemplo: Comparando valores NULL

SQL
-- NULL cannot be compared with =
SELECT * FROM users WHERE email = NULL;    -- Wrong, returns null
SELECT * FROM users WHERE email IS NULL;   -- Correct

-- NULL cannot be compared with !=
SELECT * FROM users WHERE email != NULL;   -- Wrong
SELECT * FROM users WHERE email IS NOT NULL; -- Correct

-- Safe equals <=>
SELECT NULL = NULL;    -- NULL (Uncertain)
SELECT NULL <=> NULL;  -- 1 (Determines if equal)
▶ Experimente

5. Operadores lógicos

Operador Descrição Exemplo
AND E lógico WHERE a = 1 AND b = 2
OR OU lógico WHERE a = 1 OR b = 2
NOT NÃO lógico WHERE NOT (status = 'deleted')
XOR OU exclusivo WHERE a = 1 XOR b = 2

▶ Exemplo: Combinação AND/OR

SQL
-- AND: Both conditions must be met
SELECT * FROM employees 
WHERE department = 'Engineering' AND salary > 8000;

-- OR: Meets any one of the conditions
SELECT * FROM employees 
WHERE department = 'Sales' OR department = 'Marketing';

-- Combination: Note priority (AND > OR)
SELECT * FROM employees 
WHERE (department = 'Sales' OR department = 'Marketing')
  AND salary > 5000;
▶ Experimente

▶ Exemplo: NOT (negação)

SQL
-- NOT IN
SELECT * FROM products WHERE category_id NOT IN (1, 2, 3);

-- NOT BETWEEN
SELECT * FROM orders WHERE amount NOT BETWEEN 100 AND 500;

-- NOT LIKE
SELECT * FROM users WHERE email NOT LIKE '%@test.com';

-- NOT EXISTS
SELECT * FROM customers c
WHERE NOT EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
▶ Experimente

6. Operadores bit a bit

Operador Descrição Exemplo
& AND bit a bit SELECT 5 & 3; → 1
| OR bit a bit SELECT 5 | 3; → 7
^ XOR bit a bit SELECT 5 ^ 3; → 6
~ NOT bit a bit SELECT ~5; → -6
<< Deslocamento para a esquerda SELECT 1 << 3; → 8
>> Deslocamento para a direita SELECT 8 >> 2; → 2

▶ Exemplo: Aplicações das operações bit a bit

SQL
-- Permission system (Bit mask)
-- Read=1, Write=2, Execute=4
CREATE TABLE permissions (
    user_id INT,
    permission TINYINT
);

-- User has Read+Write permissions = 1|2 = 3
INSERT INTO permissions VALUES (1, 3);

-- Check for write permission (3 & 2 = 2, non-zero means "yes")
SELECT * FROM permissions WHERE permission & 2;
▶ Experimente

7. Precedência dos operadores

Da maior para a menor:

Prioridade Operador
1 ! (NÃO)
2 - (sinal negativo), ~ (não)
3 ^ (XOR)
4 *, /, DIV, %, MOD
5 +, -
6 <<, >>
7 &
8 |
9 =, <=>, <>, !=, <, <=, >, >=, LIKE, IN, BETWEEN
10 AND, &&
11 OR, ||, XOR
💡 Dica: Se você não tiver certeza sobre a prioridade, use colchetes () para especificar a ordem de execução.


❓ Perguntas Frequentes

P: Qual é a diferença entre = e <=>? R: = retorna NULL quando comparado a NULL, enquanto <=> retorna 1 (indicando igualdade) quando comparado a NULL. <=> é um operador de igualdade seguro específico do MySQL.

P: O que é mais rápido, LIKE ou REGEXP? R: O LIKE é mais rápido (pode usar um índice), enquanto o REGEXP é mais flexível (usa expressões regulares). Use o LIKE para correspondências simples.

P: Qual é a precedência de AND e OR? R: AND tem precedência maior do que OR. WHERE a=1 OR b=2 AND c=3 é equivalente a WHERE a=1 OR (b=2 AND c=3). Recomenda-se o uso de parênteses para maior clareza.

P: Qual é o resultado de uma operação que envolve NULL? R: Qualquer operação que envolva NULL resulta em NULL. 1 + NULL = NULL, 'abc' || NULL = NULL.


📖 Resumo


📝 Exercícios

  1. Problema básico (Dificuldade ⭐): Escreva uma consulta para encontrar produtos com preço de venda entre 100 e 500, estoque maior que 0 e nome que contenha “phone”.

  2. Problema avançado (Dificuldade ⭐⭐): Escreva uma consulta para encontrar pedidos dos últimos 7 dias com valor superior a 200, status “pago” ou “enviado” e endereço de e-mail do cliente não vazio.

  3. Desafio (Dificuldade: ⭐⭐⭐): Crie um sistema de permissões que utilize operações bit a bit para armazenar e verificar as permissões de leitura, gravação e execução de um usuário.

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%