Voltar para a lista de artigos Artigos
3 minutos de leitura

Filtragem SQL 101

Às vezes, as consultas SQL retornam muitos dados de que você não precisa. Neste artigo, veremos um exemplo simples de filtragem de consultas SQL para reduzir a complexidade de seus dados.

A chave para aprender como filtrar dados em SQL é compreender os próprios fundamentos da álgebra booleana. Esse é apenas um termo extravagante que os matemáticos usam para descrever expressões envolvendo valores lógicos (verdadeiro/falso) e seus operadores associados (e, ou não, etc.). Não se desanime com este jargão; a filtragem é apenas o senso comum formalizado pela matemática.

Vamos olhar para uma simples tabela de clientes:

Esta tabela contém todos os clientes de nossa loja fictícia de animais de estimação. Listamos o nome, sobrenome, cidade de residência, país de residência, data de nascimento e tipo de animal de estimação para cada cliente que visitou nossa loja.

É claro que nem sempre estamos interessados em olhar cada um dos clientes da mesa. Talvez estejamos interessados em filtrar a tabela para mostrar dados para todos os clientes que, por exemplo, moram em Berlim. Filtraríamos os dados usando uma simples expressão na cláusula WHERE de nossa consulta:

SELECT * FROM customers WHERE city = 'Berlin';

Aqui, estamos aplicando a condição de filtro com o operador de igualdade (=), que você pode ler em voz alta como "IS". Em outras palavras, a consulta acima diz ao banco de dados para selecionar todos os dados para clientes cuja cidade é Berlim. Bastante simples, certo?

Excluindo os registros dos conjuntos de resultados

Como você faria o inverso da pergunta anterior? Ou seja, como você encontraria todos os clientes, exceto aqueles que vivem em Berlim? Nós simplesmente aplicamos o operador de exclusão (!) ao operador de igualdade para obter o operador de desigualdade composta (!=). Então nós escreveríamos:

SELECT * FROM customers WHERE city != 'Berlin';

Datas de filtragem

Agora, vamos analisar as datas de filtragem em SQL. Suponhamos que gostaríamos de encontrar todos os clientes nascidos após 1984-01-01. A expressão lógica equivalente deveria pedir uma data maior do que esta constante. Assim, escreveríamos a seguinte pergunta:

SELECT * FROM customers WHERE date_of_birth > '1984-01-01';

Naturalmente, utilizamos o operador maior que este (>). Se quiséssemos perguntar o inverso - isto é, recuperar dados de todos os clientes nascidos em 1984-01-01 ou antes, trocaríamos o sinal:

SELECT * FROM customers WHERE date_of_birth <= '1984-01-01';

Condições compostas

E se quisermos combinar algumas condições e encontrar todos os clientes que, por exemplo, nasceram depois de 1984-01-01, possuem cães, e estão localizados em Berlim? Nós acorrentaríamos nossas condições de filtragem uma após a outra (em nenhuma ordem em particular) utilizando o e operador. Aqui está a pergunta:

SELECT * FROM customers WHERE date_of_birth > '1984-01-01' and pet ='Dog' and city = 'Berlin';

Se quiséssemos selecionar todos os clientes que ou residem em Berlim ou têm um cão, simplesmente trocaríamos o AND por um OR:

SELECT * FROM customers WHERE pet ='Dog' or city = 'Berlin';

Deseja saber mais?

Neste simples tutorial, você aprendeu como filtrar dados em SQL usando operadores e condições Booleanas. É claro que isto foi apenas uma introdução à aplicação de filtros é uma habilidade que você precisa dominar para se tornar proficiente em SQL. Para ganhar mais experiência prática com tabelas de filtragem em SQL, não deixe de conferir esta seção de nosso curso SQL para Iniciantes. E lembre-se: a prática é a chave para dominar o SQL!