Então, a gente já sabe como usar o comando SELECT. Pelo menos, já aprendemos a puxar dados do banco, escolher as colunas que queremos e criar queries que começam a transformar dados crus em informação útil. Agora chegou a hora de adicionar uns "filtros" nessa nossa paleta mágica. Sim, hoje vamos falar sobre a filtragem de dados usando operadores de comparação tipo =, >, < e <>.
Quando você trabalha com tabelas grandes, provavelmente não quer ver todos os dados (a não ser que você curta o caos). Pra pegar só as linhas que interessam, no SQL a gente usa a palavra-chave WHERE. Ela deixa você definir condições que cada linha precisa cumprir pra aparecer no resultado da query. E pra essas condições, a gente usa os operadores de comparação.
Sintaxe de filtragem com WHERE
SELECT coluna1, coluna2
FROM tabela
WHERE condicao;
Bem simples: a gente coloca WHERE depois do FROM e escreve a condição que as linhas precisam cumprir.
Por exemplo, bora puxar dados da tabela students:
SELECT name, age
FROM students
WHERE age > 18;
Essa query pega só os estudantes (nome e idade) que têm mais de 18 anos. Moleza, né? Agora bora mergulhar nos operadores de comparação.
Principais operadores de comparação
No SQL tem vários operadores de comparação que vão te ajudar a filtrar os dados do jeito que você quiser. Você já deve conhecer eles da matemática, mas bora dar uma olhada no que interessa pra SQL. Aqui estão os mais usados:
=— Igual.<>— Diferente (em algumas SGBDs dá pra usar!=, mas o padrão SQL é<>).>— Maior que.<— Menor que.>=— Maior ou igual.<=— Menor ou igual.
Tabela de operadores de comparação
| Operador | Significado | Exemplo | Resultado |
|---|---|---|---|
= |
Igual | age = 20 |
Retorna linhas onde a idade é 20 |
<> |
Diferente | age <> 20 |
Retorna linhas onde a idade não é 20 |
> |
Maior que | age > 18 |
Retorna linhas onde a idade é maior que 18 |
< |
Menor que | age < 18 |
Retorna linhas onde a idade é menor que 18 |
>= |
Maior ou igual | age >= 18 |
Retorna linhas onde a idade é 18 ou mais |
<= |
Menor ou igual | age <= 18 |
Retorna linhas onde a idade é 18 ou menos |
Exemplos de uso dos operadores de comparação
Exemplo 1: Pegando estudantes com mais de 20 anos
Aqui está nossa tabela:
| id | name | age |
|---|---|---|
| 1 | Alex Lin | 22 |
| 2 | Anna Song | 19 |
| 3 | Otto Art | 21 |
SELECT name, age
FROM students
WHERE age > 20;
Aqui a gente coloca a condição age > 20 pra pegar só quem tem mais de 20 anos. Se tiver estudante com 19, já era, não aparece no resultado.
No nosso caso, o resultado vai ser assim:
| name | age |
|---|---|
| Alex Lin | 22 |
| Otto Art | 21 |
A Anna Song ficou de fora porque só tem 19 anos.
Exemplo 2: Pegando funcionários com salário de pelo menos 50.000
Aqui está a tabela employees:
| first_name | last_name | salary |
|---|---|---|
| Julia | Kim | 48000 |
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
E aqui está a query SQL:
SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50000;
Essa query retorna todos os funcionários que têm salário igual a 50.000 ou maior que isso. Igual também conta!
| first_name | last_name | salary |
|---|---|---|
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
Exemplo 3: Pegando produtos com preço menor que 100
| product_name | price |
|---|---|
| USB Cable | 85 |
| Wireless Mouse | 150 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
SELECT product_name, price
FROM products
WHERE price < 100;
Se você tem uma loja online, com essa query dá pra pegar todos os produtos que custam menos de 100 (tipo pra uma promoção "Tudo por 99!").
| product_name | price |
|---|---|
| USB Cable | 85 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
Exemplo 4: Excluindo usuários com um certo id
SELECT id, username
FROM users
WHERE id <> 1;
Essa query pega todos os usuários menos o que tem id igual a 1. O operador <> diz "me mostra todo mundo que não é esse valor".
Tabela users:
| id | username |
|---|---|
| 1 | admin |
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Resultado da query:
| id | username |
|---|---|
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Erros comuns ao filtrar com operadores de comparação
Quando você tá começando a escrever queries com filtro, é normal errar. Aqui vão alguns casos clássicos pra você ficar ligado:
Problema 1: Erro no nome das colunas
Se você escrever o nome da coluna errado na query, o PostgreSQL vai reclamar. Tipo assim:
SELECT name, age
FROM students
WHERE ages > 18; -- Erro: coluna "ages" não existe
Sempre confere o nome certinho das colunas antes de rodar a query.
Problema 2: Usar o operador de comparação errado
Às vezes a galera confunde os operadores. Tipo:
SELECT name, age
FROM students
WHERE age => 18; -- Erro: operador inválido
O certo é >=, não =>.
Problema 3: Filtrar por valores que não existem
Se você tentar filtrar por um valor que não tem na tabela, a query roda, mas não retorna nada. Tipo:
SELECT name
FROM students
WHERE age = 999; -- Resultado: 0 linhas
Isso não é erro de sintaxe, mas pode confundir se você tava esperando ver algum dado.
Aplicação prática
Filtrar dados com operadores de comparação serve pra vários cenários:
- Análise de dados: tipo pegar todos os clientes que gastaram mais de 10.000 rupias.
- Relatórios: selecionar funcionários com salário acima da média.
- Monitoramento: ver quem não acessou o sistema no último mês.
SQL deixa você puxar rapidinho os dados que precisa de tabelas enormes, e os operadores de comparação são o primeiro passo nessa jornada.
GO TO FULL VERSION