Cláusula WHERE do MySQL: AND, OR, IN, NOT IN Exemplo de consulta

O que é a cláusula WHERE no MySQL?

A cláusula WHERE no MySQL é uma palavra-chave usada para especificar os critérios exatos de dados ou linhas que serão afetados pela instrução SQL especificada. A cláusula WHERE pode ser usada com instruções SQL como INSERT, UPDATE, SELECT e DELETE para filtrar registros e realizar várias operações nos dados.

Vimos como consultar dados de um banco de dados usando a instrução SELECT no tutorial anterior. A instrução SELECT retornou todos os resultados da tabela do banco de dados consultada.

No entanto, são momentos em que queremos restringir os resultados da consulta a uma condição especificada. A cláusula WHERE em SQL é útil em tais situações.

Cláusula WHERE no MySQL
Cláusula WHERE no MySQL

Sintaxe da cláusula WHERE

A sintaxe básica para a cláusula WHERE quando usada em uma instrução SELECT WHERE do MySQL é a seguinte.

SELECT * FROM tableName WHERE condition;

AQUI

  • “SELECIONE * FROM nomedatabela” é o padrão Instrução SELECT
  • "ONDE" é a palavra-chave que restringe nosso conjunto de resultados da consulta selecionada e "doença" é o filtro a ser aplicado nos resultados. O filtro pode ser um intervalo, valor único ou subconsulta.

Vejamos agora um exemplo prático.

Suponha que queiramos obter o registro pessoal de um membrotails da tabela de membros, dado o número de membro 1, usaríamos o seguintewing roteiro para conseguir isso.

SELECT * FROM `members` WHERE `membership_number` = 1;

Executando o script acima em Ambiente de trabalho MySQL no “myflixdb” produziria o seguintewing resultados.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

Cláusula WHERE combinada com – E Operador LÓGICO

A condição WHERE no MySQL, quando usada em conjunto com o operador lógico AND, só é executada se TODOS os critérios de filtro especificados forem atendidos.

Vejamos agora um exemplo prático – Suponha que queiramos obter uma lista de todos os filmes da categoria 2 que foram lançados em 2008, usaríamos o script mostrado abaixo para conseguir isso.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
A execução do script acima no ambiente de trabalho MySQL em “myflixdb” produz o seguintewing resultados.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Cláusula WHERE combinada com – OR Operador LÓGICO

A cláusula WHERE, quando usada em conjunto com o operador OR, só é executada se algum ou todos os critérios de filtro especificados forem atendidos.
O seguintewing o roteiro obtém todos os filmes da categoria 1 ou da categoria 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
A execução do script acima no ambiente de trabalho MySQL em “myflixdb” produz o seguintewing resultados.
movie_id title director year_released category_id
1 Pirates of the Caribean 4 Rob Marshall 2011 1
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Cláusula WHERE combinada com – IN Palavra-chave

A cláusula WHERE no MySQL, quando usada em conjunto com a palavra-chave IN, afeta apenas as linhas cujos valores correspondem à lista de valores fornecida na palavra-chave IN. A instrução MySQL IN ajuda a reduzir o número de cláusulas OR que você pode precisar usar.
O seguintewing A consulta MySQL WHERE IN fornece linhas onde o número de membro é 1, 2 ou 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

A execução do script acima no ambiente de trabalho MySQL em “myflixdb” produz o seguintewing resultados.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

Cláusula WHERE combinada com – NÃO EM Palavra-chave

A cláusula WHERE, quando usada junto com a palavra-chave NOT IN, NÃO afeta as linhas cujos valores correspondem à lista de valores fornecida na palavra-chave NOT IN.
O seguintewing consulta fornece linhas onde número_de_membros NÃO é 1, 2 ou 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

A execução do script acima no ambiente de trabalho MySQL em “myflixdb” produz o seguintewing resultados.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Cláusula WHERE combinada com – Operadores de COMPARAÇÃO

Os operadores de comparação menor que (), igual a (=), diferente de () podem ser usados ​​com a cláusula WHERE

= Igual a

O seguintewing O script obtém todos os membros femininos da tabela de membros usando o operador igual a comparação.
SELECT * FROM `members` WHERE `gender` = 'Female';

A execução do script acima no ambiente de trabalho MySQL em “myflixdb” produz o seguintewing resultados.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Melhor que

O seguintewing O script obtém todos os pagamentos superiores a 2,000 da tabela de pagamentos.
SELECIONE * DE `pagamentos` ONDE `valor_pago` > 2000;
A execução do script acima no ambiente de trabalho MySQL em “myflixdb” produz o seguintewing resultados.
payment_id membership_number payment_date description amount_paid external_reference_number
1 1 23-07-2012 Movie rental payment 2500 11
3 3 30-07-2012 Movie rental payment 6000 NULL

< > Diferente de

O seguintewing script obtém todos os filmes cujo ID de categoria não é 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
A execução do script acima no ambiente de trabalho MySQL em “myflixdb” produz o seguintewing resultados.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2
5 Daddy's Little Girls NULL 2007 8
6 Angels and Demons NULL 2007 6
7 Davinci Code NULL 2007 6
9 Honey mooners John Schultz 2005 8

Resumo

  • A cláusula SQL WHERE é usada para restringir o número de linhas afetadas por um SELECT, UPDATE ou EXCLUIR consulta.
  • A condição WHERE em SQL pode ser usada em conjunto com operadores lógicos como AND e OR, operadores de comparação como, = etc.
  • Quando usado com o AND operador lógico, todos os critérios devem ser atendidos.
  • Quando usado com o operador lógico OR, qualquer um dos critérios deve ser atendido.
  • A palavra-chave IN é usada para selecionar linhas que correspondem a uma lista de valores.

Brain Teaser

Suponhamos que queremos obter uma lista dos filmes alugados que não foram devolvidos no prazo 25/06/2012. Podemos usar a cláusula de instrução SQL WHERE junto com o operador de comparação menor que e o operador lógico AND para conseguir isso.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

A execução do script acima no ambiente de trabalho MySQL fornece o seguintewing resultados.

reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0