DEV Community

Gabriel_Silvestre
Gabriel_Silvestre

Posted on • Updated on

Introdução a Filtragem de Dados - SQL

Tabela de Conteúdos


WHERE

O que é?

É um comando que nos permite adicionar condicionais a uma pesquisa, atuando como um filtro.

Filtros

Os filtros são feitos através de condicionais, essas condicionais são compostas por operadores lógicos, sendo possível adicionar mais filtros através dos operadores AND e OR.

Os operadores lógicos do MySQL incluem:

  • =: igual
  • <>: diferente
  • >: maior
  • <: menor
  • >=: maior ou igual
  • <=: menor ou igual
  • IS: compara booleanos
  • NOT: inverte o operador (negação)

Sintaxe

O WHERE deve ser declarado após a definirmos a busca no SELECT, após isso informamos o filtro desejado.

SELECT * FROM sakila.actors WHERE age >= 20;

-- A tradução literal dessa query seria:
-- Retorne todas as características dos atores que tenham 20 anos ou mais
Enter fullscreen mode Exit fullscreen mode
SELECT * FROM sakila.actors WHERE age >= 20 AND first_name <> 'john';

-- A tradução literal dessa query seria:
-- Retorne todas as características dos atores que tenham 20 anos ou mais E não se chamem John
Enter fullscreen mode Exit fullscreen mode

Voltar ao topo


LIKE

O que é?

É um comando utilizado para buscas de textos, fazendo a pesquisa ser mais dinâmica e maleável, assim conseguimos encontrar uma palavra apenas pelo seu início, fim ou "meio".

Adaptando termos

Para pesquisarmos por parte de uma palavra é necessário utilizar caracteres especiais, ou como são chamados “curingas”.

Esses caracteres são o sinal de porcentagem % e o underscore _, podemos intercalar eles em meio aos termos que desejamos pesquisar para construirmos um filtro mais maleável.

O sinal de porcentagem representa múltiplos caracteres, então se o colocarmos ao final de uma palavra, o MySQL entenderá que aquela palavra se trata do início. Já o underscore representa um único caractere.

carro de mão  -- busca exatamente "carro de mão"

carr%  -- busca uma palavra que comece com "carr"

carro  -- busca exatamente "carro"

c__ro  -- busca uma palavra que comece com "c", possua 2 letras quaisquer e termine com "ro"
Enter fullscreen mode Exit fullscreen mode

Sintaxe

O LIKE funciona como um operador lógico, logo ele deve ser utilizado apenas após o WHERE, sendo necessário informar o termo de pesquisa através de string e utilizando os caracteres “curingas”.

SELECT * FROM sakila.actors WHERE age >= 20 AND last_name LIKE 'ca%';

-- A tradução literal dessa query seria:
-- Retorne todas as características dos atores que o tenham 20 anos ou mais E com o sobrenome começando com "ca"
Enter fullscreen mode Exit fullscreen mode

Voltar ao topo


IN

O que é?

É um operador lógico que pode ser usado como uma condição para filtros, ele indica valores que estão dentro de uma coluna, comumente utilizado para substituir um encadeamento de OR.

Pode ser comparado ao método .includes() do JS.

Sintaxe

O IN deve ser posicionado após o comando WHERE e os termos a serem pesquisados devem ser passados como argumento para o IN.

SELECT * FROM sakila.actors WHERE age IN (20, 24, 32, 40);

-- A tradução literal dessa query seria:
-- Retorne todas as características dos atores que tenham 20, 24, 32 ou 40 anos
Enter fullscreen mode Exit fullscreen mode

Voltar ao topo


BETWEEN

O que é?

Assim como o IN, o BETWEEN é um operador lógico, que pode ser usado como condicional em filtros, ele limita a pesquisa a valores dentro de intervalo determinado por nós.

Sintaxe

O BETWEEN deve ser utilizado após o WHERE.

Para definirmos o intervalo usamos além do comando BETWEEN, o operador AND, dessa forma o primeiro valor vai depois do BETWEEN e o segundo após o AND.

SELECT * FROM sakila.actors WHERE age BETWEEN 20 AND 40;

-- A tradução literal dessa query seria:
-- Retorne todas as características dos atores que tenham ENTRE 20 E 40 anos
Enter fullscreen mode Exit fullscreen mode
SELECT * FROM sakila.languages
WHERE name BETWEEN 'italian' AND 'mandarim';

-- A tradução literal dessa query seria:
-- Retorne todas as características dos idiomas que estejam entre "italian" e "mandarim"
Enter fullscreen mode Exit fullscreen mode

Voltar ao topo


DATE

O que é?

É uma função que permite a utilização datas em nossas Queries.

Encontrando datas

Podemos pesquisar por datas de duas formas diferentes, através da função DATE, caso estivermos fazendo uma comparação específica, ou através dos operadores LIKE, BETWEEN e IN.

Sintaxe

Por ser uma função de conversão, o DATE pode ser usado em diferentes contextos, mas no caso de filtragem de dados iremos utilizá-lo como um conversor para o filtro.

Para fazermos a condicional com datas, devemos utilizar o formato AAAA-MM-DD (ANO-MÊS-DIA)

SELECT * FROM sakila.payment
WHERE DATE(payment_date) = '2005-07-31';

-- A tradução literal dessa query seria:
-- Retorne todas as características dos pagamentos que foram feitos dia 31 do 07 de 2005
Enter fullscreen mode Exit fullscreen mode
SELECT * FROM sakila.payment
WHERE payment_date BETWEEN '2005-05-26' AND '2005-06-26';

-- A tradução literal dessa query seria:
-- Retorne todas as características dos pagamentos realizados entre 26/05/2005 e 26/06/2006
Enter fullscreen mode Exit fullscreen mode

*Obs: Como visto no exemplo acima, nem sempre precisamos realizar a conversão de datas, apenas nos casos que vamos comparar valores específicos, em pesquisas de intervalos isso não é necessário.

Voltar ao topo


Links Úteis

Voltar ao topo

Discussion (0)