Como filtrar resultados com a cláusula WHERE no MySQL – Elias Praciano
Categories
Banco de dados Programação Tutoriais

Como filtrar resultados com a cláusula WHERE no MySQL

Como usar a cláusula WHERE, no MySQL, através de exemplos, com os operadores IN() e AND.

A cláusula WHERE serve para informar ao servidor de banco de dados MySQL exatamente quais resultados lhe interessa obter.
A consulta feita, através do SELECT, pode acabar trazendo uma quantidade de dados muito extensa.
Capa do artigo A Cláusula WHERE no MySQL
Adicionar uma cláusula WHERE a uma consulta MySQL, permite especificar que condições precisam ser satisfeitas para que um resultado seja exibido na tela.
Se você quiser ver outros exemplos de funcionamento da cláusula WHERE, use a caixa de busca, no topo deste site, para encontrar outros artigos sobre o assunto.

Como funciona a cláusula WHERE para limitar a exibição dos primeiros registros da tabela no MySQL

Neste tutorial, vou usar como exemplo uma tabela com 100 registros.
Esta quantidade de registros pode se tornar muito maçante para ser usada em um mero tutorial e acaba por tirar a atenção do que realmente interessa.
Portanto, para ver apenas os primeiros 10 registros, uso a cláusula WHERE desta forma:

SELECT * FROM ClientesCidades WHERE id < 10;
+----+-----------------+--------------+------------------+-------------+
| id | NomeCliente     | IdadeCliente | CidadeCliente    | CredCliente |
+----+-----------------+--------------+------------------+-------------+
|  1 | Dara Chase      |           40 | Buti             |          21 |
|  2 | Hanae Kane      |           26 | Whitehorse       |          28 |
|  3 | Jaden Moon      |           29 | Bertiolo         |          17 |
|  4 | Cathleen Harvey |           39 | Exeter           |          12 |
|  5 | Marcia Cole     |           49 | Fortune          |          13 |
|  6 | Winter Fischer  |           47 | Girifalco        |          53 |
|  7 | Irene Mann      |           48 | Rocca San Felice |          78 |
|  8 | Yetta Wood      |           46 | Doues            |          89 |
|  9 | Alfreda Church  |           38 | Tarnów           |          96 |
+----+-----------------+--------------+------------------+-------------+
9 rows in set (0.00 sec)

Veja como exibir apenas os clientes, cuja coluna IdadeCliente = 42:

SELECT * FROM ClientesCidades WHERE IdadeCliente = 42;
+----+------------------+--------------+----------------+-------------+
| id | NomeCliente      | IdadeCliente | CidadeCliente  | CredCliente |
+----+------------------+--------------+----------------+-------------+
| 18 | Zelenia Brady    |           42 | Modena         |          35 |
| 27 | Sandra Gay       |           42 | Oklahoma City  |          93 |
| 53 | Chastity Charles |           42 | Calgary        |          76 |
| 92 | Martena Flowers  |           42 | Fontenoille    |          97 |
| 93 | Piper Fuentes    |           42 | Qualicum Beach |          76 |
| 94 | Althea Knight    |           42 | My             |          18 |
+----+------------------+--------------+----------------+-------------+
6 rows in set (0.00 sec)

E se eu quiser ver os registros em que IdadeCliente seja igual a 20, 21 e 22?
Veja como obter este resultado, em ordem ascendente de CredCliente:

SELECT * FROM ClientesCidades WHERE IdadeCliente = 20 OR IdadeCliente = 21 OR IdadeCliente = 22 ORDER BY CredCliente;
+----+----------------+--------------+---------------+-------------+
| id | NomeCliente    | IdadeCliente | CidadeCliente | CredCliente |
+----+----------------+--------------+---------------+-------------+
| 14 | Alea Beach     |           21 | Oromocto      |          15 |
| 64 | Illana Cannon  |           21 | Diksmuide     |          15 |
| 50 | Kelsie Whitney |           20 | Barranca      |          16 |
| 71 | Kylie Bradshaw |           20 | Fontanigorda  |          16 |
| 42 | Lynn Howe      |           21 | Basirhat      |          66 |
| 72 | Zenia Carr     |           22 | Wernigerode   |          78 |
| 76 | Leigh Barnett  |           22 | Stokrooie     |          87 |
| 31 | Cynthia Levy   |           21 | Pukekohe      |          99 |
+----+----------------+--------------+---------------+-------------+
8 rows in set (0.00 sec)

Como usar o operador IN() do MySQL

A query anterior pode ser simplificada com a adição do operador IN().
O operador IN() retorna verdadeiro (true) a cada vez que encontra uma coluna com valor correspondente ao seu.
Não entendeu? Vamos deixar o exemplo abaixo falar por si:

SELECT * FROM ClientesCidades WHERE IdadeCliente IN (20,21,22) ORDER BY CredCliente;

Note que a linha de comando é significativamente menor e o resultado, abaixo, é o mesmo obtido anteriormente:

+----+----------------+--------------+---------------+-------------+
| id | NomeCliente    | IdadeCliente | CidadeCliente | CredCliente |
+----+----------------+--------------+---------------+-------------+
| 14 | Alea Beach     |           21 | Oromocto      |          15 |
| 64 | Illana Cannon  |           21 | Diksmuide     |          15 |
| 50 | Kelsie Whitney |           20 | Barranca      |          16 |
| 71 | Kylie Bradshaw |           20 | Fontanigorda  |          16 |
| 42 | Lynn Howe      |           21 | Basirhat      |          66 |
| 72 | Zenia Carr     |           22 | Wernigerode   |          78 |
| 76 | Leigh Barnett  |           22 | Stokrooie     |          87 |
| 31 | Cynthia Levy   |           21 | Pukekohe      |          99 |
+----+----------------+--------------+---------------+-------------+
8 rows in set (0.00 sec)

Como usar o operador AND do MySQL

Se você quiser que duas condições sejam satisfeitas simultaneamente, use o operador AND:

SELECT * FROM ClientesCidades WHERE IdadeCliente < 30 AND CredCliente > 90;

No exemplo, acima, foi pedido uma lista dos clientes com idade inferior a 30 anos e com créditos superiores a 90. Veja o resultado:

+----+-----------------+--------------+---------------+-------------+
| id | NomeCliente     | IdadeCliente | CidadeCliente | CredCliente |
+----+-----------------+--------------+---------------+-------------+
| 31 | Cynthia Levy    |           21 | Pukekohe      |          99 |
| 37 | Tasha Walters   |           19 | Goutroux      |          98 |
| 62 | Zelenia Moss    |           18 | Elx           |          99 |
| 63 | Camilla Freeman |           19 | Falkensee     |          91 |
| 97 | Bo Simpson      |           24 | Omaha         |          91 |
+----+-----------------+--------------+---------------+-------------+
5 rows in set (0.00 sec)

No próximo exemplo vou usar uma query para testar se há algum cliente cuja idade seja igual ao seu crédito. Veja:

SELECT * FROM ClientesCidades WHERE IdadeCliente = CredCliente;

Por sorte, havia um:

+----+--------------+--------------+---------------+-------------+
| id | NomeCliente  | IdadeCliente | CidadeCliente | CredCliente |
+----+--------------+--------------+---------------+-------------+
| 46 | Signe Gamble |           39 | Charny        |          39 |
+----+--------------+--------------+---------------+-------------+
1 row in set (0.00 sec)

Divirta-se!

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

3 replies on “Como filtrar resultados com a cláusula WHERE no MySQL”

Olá boa noite Sr. Elias. Sr. Elias ´por favor me dê uma luz. Como posso fazer um sistema em que eu cadastre um elemento e consiga depois fazer um relatório desse elemento com suas variações e depois poder imprimir em tela sem que os valores se misturem a outros cadastros.Por exemplo: o carro azul foi colocado 10 latas de cervejas. 2º exemplo: o carro verde foram colocados 5 latas de cerveja. Co o posso fazer uma consulta em tela em que apareça apenas os atributos do carro azul sem puxar os resultados do carro amarelo. Por favor senhor Elias

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.