Pessoa analisando dados em um tablet e computador
Uma consulta pode escolher colunas, filtrar linhas, ordenar resultados e limitar a quantidade exibida. Crédito da foto.
Compartilhe este conteúdo

Consultar bem não significa trazer toda a tabela e procurar visualmente. Em SQL, a consulta descreve quais colunas e linhas devem compor o resultado; WHERE filtra, ORDER BY ordena a apresentação e LIMIT restringe a quantidade retornada. Para os exemplos, imagine uma tabela produtos com id, nome, categoria, preço, estoque e ativo.

WHERE escolhe quais linhas participam

SELECT nome, preco
FROM produtos
WHERE categoria = 'Higiene';

Textos aparecem entre aspas simples. Números não precisam delas. Operadores comuns incluem =, <>, >, <, >= e <=.

SELECT nome, estoque
FROM produtos
WHERE estoque < 10;

AND, OR e parênteses

AND exige que todas as condições sejam verdadeiras. OR aceita qualquer uma. Quando os dois aparecem, use parênteses para tornar a intenção explícita.

SELECT nome, categoria, preco
FROM produtos
WHERE ativo = true
AND (categoria = 'Higiene' OR categoria = 'Beleza');
Cuidado: esquecer o WHERE em UPDATE ou DELETE pode alterar todas as linhas. Primeiro execute um SELECT com a mesma condição e confirme o conjunto afetado.

LIKE e ILIKE

LIKE procura padrões. O símbolo % representa qualquer sequência de caracteres. No PostgreSQL, ILIKE faz comparação sem diferenciar maiúsculas e minúsculas.

SELECT nome
FROM produtos
WHERE nome ILIKE '%shampoo%';

Esse padrão encontra “shampoo” em qualquer posição do nome. Já 'shampoo%' exige que o texto comece assim.

ORDER BY organiza a apresentação

SELECT nome, preco
FROM produtos
WHERE ativo = true
ORDER BY preco ASC;

ASC ordena de forma crescente e é o padrão. DESC inverte. É possível usar mais de uma coluna para desempatar.

SELECT nome, categoria, preco
FROM produtos
ORDER BY categoria ASC, preco DESC;

A ordenação ocorre depois do filtro lógico. Ela não altera os dados armazenados; muda apenas a apresentação do resultado.

LIMIT controla a quantidade

SELECT nome, estoque
FROM produtos
ORDER BY estoque ASC, id ASC
LIMIT 5;

Essa consulta mostra cinco itens com menor estoque. Usar LIMIT sem ORDER BY não garante quais linhas serão escolhidas. Inclua um critério estável, como o id, para desempatar.

Valores nulos

NULL representa ausência de valor e não é comparado com =. Use IS NULL ou IS NOT NULL.

SELECT nome
FROM produtos
WHERE categoria IS NULL;

Desafio prático

Escreva uma consulta que mostre nome, categoria e preço dos produtos ativos com estoque maior que zero, cujo nome contenha “óleo”, ordenados do maior preço para o menor, exibindo apenas os três primeiros. Depois explique a função de cada cláusula.

Perguntas frequentes

ORDER BY, LIMIT e LIKE só podem ser usados no SELECT?

ORDER BY e LIMIT são mais comuns no SELECT, mas o suporte em outros comandos varia conforme o banco. LIKE é uma condição e pode aparecer onde expressões de filtro forem aceitas. Consulte a documentação do SGBD.

Posso usar maior e menor com datas?

Sim, desde que a coluna tenha tipo de data ou horário e o valor seja fornecido em formato aceito pelo banco.

Referências bibliográficas

Obras reconhecidas que fundamentam e aprofundam os conceitos apresentados neste artigo.

  1. BEAULIEU, Alan. Learning SQL. 3. ed. O’Reilly Media, 2020.
  2. ELMASRI, Ramez; NAVATHE, Shamkant B. Fundamentals of Database Systems. 7. ed. Pearson, 2016.

Consulte a bibliografia completa do Código em Sala.