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
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
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"
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"
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
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
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"
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
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
*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.
 

 
    
Top comments (0)