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)