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

Índice:

Anonim

O que é 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 executar 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 de 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 no SQL é útil em tais situações.

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

  • "SELECT * FROM tableName" é a instrução SELECT padrão
  • "WHERE" é a palavra-chave que restringe nosso conjunto de resultados da consulta selecionada e "condição" é 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 queremos obter os detalhes pessoais de um membro da tabela de membros, dado o número de membro 1, usaríamos o seguinte script para conseguir isso.

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

Executar o script acima no ambiente de trabalho MySQL no "myflixdb" produziria os seguintes 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 This email address is being protected from spambots. You need JavaScript enabled to view it.

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

A condição WHERE no MySQL, quando usada junto 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 desejemos 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;

Executar o script acima no ambiente de trabalho MySQL no "myflixdb" produz os seguintes 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 junto com o operador OR, só é executada se algum ou todos os critérios de filtro especificados forem atendidos. O script a seguir obtém todos os filmes da categoria 1 ou da categoria 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Executar o script acima no ambiente de trabalho MySQL no "myflixdb" produz os seguintes 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 - palavra- chave IN

A cláusula WHERE no MySQL, quando usada junto 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 ter que usar. A consulta WHERE IN do MySQL a seguir fornece linhas em que número_de_ membros é 1, 2 ou 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Executar o script acima no ambiente de trabalho MySQL no "myflixdb" produz os seguintes 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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 This email address is being protected from spambots. You need JavaScript enabled to view it.

Cláusula WHERE combinada com - palavra- chave NOT IN

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. A consulta a seguir fornece linhas em que número_de_ membros NÃO é 1, 2 ou 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Executar o script acima no ambiente de trabalho MySQL no "myflixdb" produz os seguintes 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 - COMPARISON Operators

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

= Igual a

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

Executar o script acima no ambiente de trabalho MySQL no "myflixdb" produz os seguintes 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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Maior que

O script a seguir obtém todos os pagamentos superiores a 2.000 da tabela de pagamentos. SELECIONE * DE `pagamentos` ONDE` quantia_paid`> 2000; Executar o script acima no ambiente de trabalho MySQL no "myflixdb" produz os seguintes 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 script a seguir obtém todos os filmes cujo id de categoria não é 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Executar o script acima no ambiente de trabalho MySQL no "myflixdb" produz os seguintes 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 uma consulta SELECT, UPDATE ou DELETE.
  • 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 operador lógico AND, 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 Vamos supor que desejamos 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 os seguintes resultados.
 
reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0