A cláusula WHERE é utilizada para extrair resultados que cumpram determinadas condições, ou seja, funciona como um filtro para que seja retornado apenas resultados específicos em uma consulta.
Guia do artigo:
Visão geral
É dentro desta cláusula que é feito a maioria dos filtros que irão trazer o resultado esperado pelo SELECT. Nela pode ser utilizado desde comparação de valores com operadores de comparação, até filtros com base em subqueries utilizando cláusulas como IN, NOT IN e EXISTS.
Para este exemplo, considere o seguinte cenário:
uma empresa do ramo de vendas possui uma tabela no banco de dados chamada cliente (Tabela 1), onde armazena todas as informações referentes a todos os seus clientes.
id | nome | cidade | data_cadastro | |
1 | Fernando Braga | contato@mundial.com.br | Belo Horizonte | 2017-11-05 |
2 | Luana Soares | luanassa@yahoo.com.br | São Paulo | 2016-05-05 |
3 | Pedro Botelho | contato@mundial.com.br | São Paulo | 2018-04-02 |
4 | Marilia Gabriela | mari_21@yahoo.com.br | São Paulo | 2018-03-01 |
5 | Bruno Henrique | brunohrq@gmail.com | Rio de Janeiro | 2016-05-05 |
6 | Cintia Pereira | cintiazinha@ig.com.br | Belo Horizonte | 2014-11-12 |
7 | Raquel Tavares | contato@mundial.com.br | Belo Horizonte | 2014-11-11 |
Suponhamos que seja necessário lista os dados de um usuário específico, cujo nome é Marilia Gabriela. Para isso podemos utilizar o trecho de código abaixo:
SELECT
*
FROM
Cliente
WHERE
nome = ‘Marilia Gabriela’
No trecho de código acima, utilizamos na linha 5 a cláusula WHERE para informar que a consulta deve trazer apenas os resultados que atendam aos filtros informados, que no nosso caso é o valor da coluna nome ser igual a Marilia Gabriela (linha 6).
O resultado da query pode ser visto na Tabela 2.
id | nome | cidade | data_cadastro | |
4 | Marilia Gabriela | mari_21@yahoo.com.br | São Paulo | 2018-03-01 |
Sintaxe
SELECT
[ coluna1, coluna2, ... | * ]
FROM
[ tabela1, tabela2, ... ]
WHERE
[ condicao ];
Na prática
Exemplo 1
Ainda utilizando a estrutura de tabela cliente, suponha que seja necessário trazer todos os clientes que tenham se cadastrado no ano de 2016. Para isso, podemos utilizar o seguinte trecho de código:
SELECT
*
FROM
Cliente
WHERE
YEAR(data_cadastro) = 2016
No trecho de código acima, nas linha 5 e 6 definimos o filtro da consulta utilizando WHERE para trazer resultados somente cujo ano da coluna data_cadastro seja igual a 2016.
O resultado da query pode ser visto na Tabela 3.
id | nome | cidade | data_cadastro | |
2 | Luana Soares | luanassa@yahoo.com.br | São Paulo | 2016-05-05 |
5 | Bruno Henrique | brunohrq@gmail.com | Rio de Janeiro | 2016-05-05 |
É importante lembrar que o WHERE suporta os operadores de condição igual (=), maior que (>), menor que ( /span>), maior ou igual (>=), menor ou igual ( ) e diferente ( ou != dependendo do SGBD).
Exemplo 2
Suponhamos que agora seja necessário trazer todos os clientes com e-mail do yahoo que morem em São Paulo, ou seja, duas condições de filtro. Para isso, podemos utilizar o seguinte trecho de código:
SELECT
*
FROM
cliente
WHERE
email like ‘%@yahoo.com.br’ AND
cidade = ‘São Paulo’
No trecho de código acima selecionamos todos os dados da tabela cliente, e nas linhas 5 a 7 definimos o filtro da consulta como buscar todos os clientes que possuam email do yahoo, através da cláusula LIKE, e utilizamos o operador lógico AND para informar que além desse filtro, obrigatoriamente a consulta deve respeitar o próximo filtro, que é a cidade do cliente ser igual a São Paulo.
O resultado da consulta pode ser visto na Tabela 4.
id | nome | cidade | data_cadastro | |
2 | Luana Soares | luanassa@yahoo.com.br | São Paulo | 2016-05-05 |
4 | Marilia Gabriela | mari_21@yahoo.com.br | São Paulo | 2018-03-01 |
Na Tabela 5 podemos conhecer melhor os operadores lógicos e condicionais que podemos utilizar no WHERE e uma breve descrição de sua função.
Operador | Descrição |
= | Igual |
!= ou <> | Diferente |
< | Menor |
> | Maior |
>= | Maior ou Igual |
<= | Menor ou Igual |
AND | Exibe os resultados da consulta quando ambos as condições forem verdadeiras. |
OR | Exibe os resultados da consulta quando pelo menos uma das condições forem verdadeiras. |
NOT | É utilizado após o WHERE e faz uma inversão das condicionais, ou seja, retorna apenas os resultados que foram omitidos pelas condições definidas. |
Os operadores lógicos mais complexos como IN e LIKE foram separados em categorias separadas para que pudessem ter uma descrição mais detalhada de suas funções.