
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');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.
- BEAULIEU, Alan. Learning SQL. 3. ed. O’Reilly Media, 2020.
- ELMASRI, Ramez; NAVATHE, Shamkant B. Fundamentals of Database Systems. 7. ed. Pearson, 2016.