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

⚡ Resumo Inteligente

MySQL A cláusula WHERE filtra as linhas antes que elas cheguem ao conjunto de resultados, aplicando critérios precisos às instruções SELECT, UPDATE e DELETE. Compreender os operadores AND, OR, IN, NOT IN e de comparação permite que os iniciantes recuperem exatamente os registros que uma consulta requer.

  • 🔍 Objetivo principal: A cláusula WHERE restringe quais linhas uma instrução altera, portanto, SELECT, UPDATE e DELETE afetam apenas as linhas correspondentes.
  • 🔗 E Operator: As linhas são retornadas somente quando todas as condições forem avaliadas como verdadeiras, restringindo o conjunto de resultados.
  • 🔀 OR Operator: As linhas são retornadas quando qualquer uma das condições individuais é avaliada como verdadeira, ampliando o conjunto de resultados.
  • 📋 DENTRO e FORA: A palavra-chave IN corresponde a uma lista de valores em uma expressão, enquanto NOT IN exclui essa mesma lista.
  • ⚖️ Comparação Operatores: Os filtros "igual a" (=), "maior que" (>), "menor que" (<) e "diferente de" (<>) servem para filtrar colunas numéricas, de texto e de data.
  • ⚠️ Tratamento de valores NULL: O valor NULL nunca corresponde a = ou <>, portanto, IS NULL e IS NOT NULL são necessários para verificar a presença de valores ausentes.

O que é a cláusula WHERE em MySQL?

A cláusula WHERE in 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 do banco de dados consultada.

Existem, no entanto, momentos em que desejamos restringir os resultados da consulta a uma condição específica. A cláusula WHERE em SQL é útil nessas situações e funciona da mesma maneira em um Consulta DELETE ou UPDATE como acontece em uma consulta SELECT.

Cláusula WHERE em MySQL

Sintaxe da cláusula WHERE

A sintaxe básica da cláusula WHERE é a seguinte.

SELECT * FROM tableName WHERE condition;

AQUI

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

Suponha que desejemos os detalhes de um membro da tabela de membros, dado o número de associação 1. O script abaixo realiza essa tarefa.

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

Executando este script em MySQL bancada Ao pesquisar “myflixdb”, o resultado é o seguinte.

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

Uma única condição raramente é suficiente. As seções abaixo combinam WHERE com Operadores lógicos.

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

Com o operador lógico AND, uma linha é retornada somente se TODOS os critérios especificados forem atendidos.

Suponha que queiramos todos os filmes da categoria 2 que foram lançados em 2008. O script abaixo realiza essa tarefa.

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

A execução do script acima no banco de dados “myflixdb” produz o seguinte resultado.

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

O operador AND restringe o conjunto de resultados. O operador OR o amplia.

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

Com o operador OR, uma linha é retornada se QUALQUER UM dos critérios especificados for atendido.

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;

O conjunto de resultados é mostrado abaixo.

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

Encadear muitas condições OR torna a leitura difícil. A palavra-chave IN resolve esse problema.

Cláusula WHERE combinada com – IN Palavra-chave

A cláusula WHERE, quando usada com a palavra-chave IN, afeta apenas as linhas cujos valores correspondem à lista fornecida. O IN reduz o número de cláusulas OR que você precisaria escrever.

Os seguintes MySQL A consulta WHERE IN retorna as linhas onde membership_number é 1, 2 ou 3.

SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

O conjunto de resultados é mostrado abaixo.

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

NOT IN executa o filtro oposto.

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

Com a palavra-chave NOT IN, a cláusula WHERE exclui todas as linhas cujo valor corresponde à lista fornecida.

A consulta a seguir retorna linhas onde membership_number NÃO é 1, 2 ou 3.

SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

O conjunto de resultados é mostrado abaixo.

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

A função WHERE também filtra valores por tamanho e igualdade, usando operadores de comparação.

Cláusula WHERE combinada com – COMPARAÇÃO Operatoros

Os operadores de comparação menor que (<), igual a (=), maior que (>) e 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 igual a comparação.

SELECT * FROM `members` WHERE `gender` = 'Female';

O conjunto de resultados é mostrado abaixo.

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 script a seguir obtém todos os pagamentos superiores a 2,000 da tabela de pagamentos.

SELECT * FROM `payments` WHERE `amount_paid` > 2000;

O conjunto de resultados é mostrado abaixo.

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

<> Não é igual a

O script a seguir obtém todos os filmes cujo ID de categoria não é 1.

SELECT * FROM `movies` WHERE `category_id` <> 1;

O conjunto de resultados é mostrado abaixo.

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

Referência rápida: Cláusula WHERE Operatoros

Os operadores mais frequentemente usados ​​com WHERE estão resumidos abaixo. As definições completas aparecem no MySQL referência do operador.

Operator Significado Condição de exemplo
= Igual a `gênero` = 'Feminino'
<> Diferente de `category_id` <> 1
> / Maior que / menor que `valor_pago` > 2000
E/OU Todos os critérios / quaisquer critérios `category_id` = 2 E `year_released` = 2008
DENTRO / NÃO DENTRO Corresponde a uma lista / exclui uma lista `membership_number` IN (1,2,3)
É NULO / NÃO É NULO Testes para valores ausentes `postal_address` É NULO

⚠️ Nota: O valor NULL nunca corresponde a = ou <>. Use IS NULL ou IS NOT NULL quando uma coluna não puder conter nenhum valor.

Desafio: Encontre os filmes devolvidos com atraso

Suponha que queiramos os filmes alugados que não foram devolvidos até a data limite de 25/06/2012. Combinando a cláusula WHERE com o operador "menor que" e a cláusula AND, conseguimos isso.

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;

Executando o script acima em MySQL workbench 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

Perguntas Frequentes

WHERE filtra linhas individuais antes do agrupamento.ping, portanto não pode referenciar funções agregadas. HAVING filtra grupos após a execução de GROUP BY, tornando-o o local certo para condições como COUNT(*) > 5.

Use IS NULL ou IS NOT NULL. OperaOperadores como = e <> retornam desconhecido para NULL, então `postal_address` = NULL não corresponde a nada, enquanto `postal_address` IS NULL funciona.

Sim, quando a coluna filtrada é indexada, MySQL Lê apenas as linhas correspondentes em vez de percorrer a tabela.ping Uma coluna em uma função, como YEAR(`date_of_birth`) = 1980, impede o uso de índice.

Sim. Assistentes de IA transformam inglês simples em SQL, e MySQL Workbench pode executar o resultado. RevAnalise cada condição em relação ao seu esquema, pois um modelo pode inventar nomes de colunas.

Teste primeiro com SELECT. Uma cláusula WHERE incorreta em um Consulta DELETE ou UPDATE É possível alterar todas as linhas. Visualize as linhas correspondentes e, em seguida, reutilize a mesma condição para a gravação.

Resuma esta postagem com: