Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Condição WHERE no MySQL com 16 exemplos de consulta diferentes


Neste artigo, falaremos sobre o WHERE cláusula e como usá-la no MySQL. Além de SELECT , o escopo do WHERE cláusula inclui o UPDATE e DELETE declarações. O WHERE cláusula é indispensável para um trabalho de qualidade com bancos de dados MySQL. É por isso que o presente artigo tratará dessa cláusula e explorará em profundidade suas características distintivas.

Quando lidamos com o MySQL, precisamos de cláusulas condicionais para as instruções SELECT na maioria absoluta dos casos. Tais cláusulas determinam os critérios de seleção, de modo que obtemos apenas os dados de que precisamos.

O MySQL WHERE cláusula é o meio mais prático de filtrar resultados. É flexível, permitindo que os usuários especifiquem várias condições para a seleção de dados e combinem várias condições em uma declaração. Para tornar a sua rotina de trabalho ainda mais agradável, é sempre melhor recorrer ao perfil do MySQL e à otimização de consultas.

Conteúdo
  • Sintaxe do MySQL WHERE
  • Usando WHERE no MySQL
  • Exemplo de condição única de consulta WHERE
  • Várias condições WHERE
  • ONDE E operador
  • Operador WHERE OR
  • Usando AND com condições OR
  • Operador WHERE BETWEEN
  • Operador WHERE LIKE
  • WHERE NOT LIKE exemplo
  • Operador WHERE IN
  • ONDE NÃO NO exemplo
  • Operador WHERE IS NULL
  • Exemplo WHERE NOT NULL
  • ONDE NÃO EXISTE
  • ONDE EXISTE
  • Usando a cláusula WHERE do MySQL com operadores de comparação
  • Resumo

Sintaxe MySQL WHERE


Para começar, vamos dar uma olhada em como usar WHERE no SELECT demonstração. A sintaxe básica é a seguinte:
SELECT column1, column2, ...
FROM table_name
WHERE condition;

SELECT … FROM é a instrução padrão que define quais colunas e qual tabela visamos. O WHERE palavra-chave identifica os critérios de seleção de dados. Pode haver um único valor, o intervalo entre os valores, a subconsulta e mais de uma condição.

Automatize seu trabalho com critérios de consulta. Veja e edite-os visualmente nas guias separadas do nosso visual Ferramenta de consulta MySQL onde você está desenhando sua consulta. Você não precisa digitar os nomes das colunas ou lembrar de regras complexas. Basta selecionar os dados necessários nas listas e aproveitar os resultados.

Usando WHERE no MySQL


O MySQL funciona da seguinte maneira ao executar o SELECT declaração contendo o WHERE cláusula:
  1. Avalie o FROM cláusula para identificar a tabela de destino.
  2. Prossiga para WHERE cláusula para avaliar os critérios de seleção de dados.
  3. Verifique o SELECT instrução para definir as colunas a serem recuperadas.

Observação :O SELECT geralmente inclui a instrução ORDER BY cláusula que coloca os resultados em ordem crescente ou decrescente. Se sim, o MySQL irá avaliá-lo no final.

O princípio de trabalho do MySQL WHERE é semelhante ao IF condição em linguagens de programação. Ele compara os valores que fornecemos com os da tabela MySQL de destino. Quando esses valores correspondem, o RDBMS busca esses registros para os usuários.

Quando a condição para WHERE cláusula é um valor de texto, colocamos esse texto entre aspas simples. No entanto, não são necessárias aspas para os valores numéricos.
SELECT first_name, last_name, city 
FROM Readers
WHERE City = ‘Seattle’;

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Aumente o nível de suas habilidades de script com o avançado formatador MySQL que permite embelezar seu código para obtê-lo exatamente como você gosta.

Agora, vamos revisar o uso do WHERE cláusula. Envolve muitos casos específicos. A melhor maneira de explorá-los é consultar um MySQL prático WHERE exemplo para cada cenário.

exemplo de condição única de consulta WHERE


O cenário mais simples de usar esta cláusula é MySQL WHERE ter um único critério para a seleção de dados. Suponha que alguma empresa queira recuperar a lista de seus funcionários que trabalham no departamento de Atendimento ao Cliente como gerentes de suporte:
SELECT 
    last_name, 
    first_name, 
    job_title
FROM
    employees
WHERE
    jobtitle = 'Support';

A consulta recuperará dados dos funcionários tabela e filtre os registros de acordo com o valor no job_title coluna. Deve retornar a lista de todos os sobrenomes e nomes de todos os funcionários que trabalham como gerentes de suporte. A saída está abaixo:

last_name first_name job_title
Raposa Maria Suporte
Preto João Suporte
Johnson Steve Suporte
Hudson Diana Suporte
Williams Katie Suporte
Verde Jake Suporte

Observação :Сode menos e faça mais com o verificador de sintaxe do MySQL. O dbForge Studio for MySQL é um IDE rico em recursos projetado para facilitar o desenvolvimento, manutenção e administração de banco de dados MySQL e MariaDB.

Várias condições WHERE


O exemplo fornecido acima prova que o MySQL WHERE cláusula traz dados que correspondem à condição. Nesse caso, ele filtrava todos os funcionários com o cargo especificado. No entanto, muitas vezes precisamos definir vários critérios para recuperar os dados. É viável - precisamos aplicar o MySQL WHERE com os operadores específicos - o AND operador e o OR operador.

ONDE E operador


Vamos tornar nosso exemplo anterior um pouco mais complicado. Queremos a lista de funcionários que trabalham no departamento de Suporte, contratados no ano passado.

Para fazer isso, vamos definir duas condições e uni-las com o AND operador lógico:
SELECT 
    last_name, 
    first_name, 
    job_title,
    hire_year
FROM
    employees
WHERE
    jobtitle = 'Support' AND 
    hire_year = 2021;

A saída:
last_name first_name job_title aluguer_ano
Raposa Maria Suporte 2021
Preto João Suporte 2021
Johnson Steve Suporte 2021

A escrita de código em si ocupa a maior parte do tempo total que você gasta no desenvolvimento e administração do banco de dados. Dobre sua velocidade de codificação com o editor de código do MySQL Server refinado e otimizado que vem com o dbForge Studio for MySQL.

Operador WHERE OR


Usando o OR operador lógico é outro método de trabalhar com várias condições no MySQL WHERE cláusula. Se enviarmos essa consulta, ela retornará dados que correspondem aos critérios que definimos.

A empresa quer verificar os clientes regulares vindos de duas cidades. Para isso, especificaremos essas cidades e usaremos o OR operador.
SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
last_name first_name cidade
Anderson Maria Seattle
Preto João Seattle
Thompson Steve Bellevue
Smith Diana Bellevue
Williams Katie Seattle
Peters Jake Seattle

Usando AND com condições OR


MySQL permite combinar o MySQL WHERE AND OR – ambos os operadores lógicos podem estar presentes em uma única instrução. Neste caso, o MySQL verificará três condições de uma vez.

Por exemplo, a biblioteca deseja obter informações sobre seus leitores residentes em Bellevue, que se tornaram leitores regulares da biblioteca em 2021 ou leram mais de 20 livros.

Neste caso, o MySQL WHERE string torna-se mais complexa. Para encaixar e organizar AND &OR condições, usamos os parênteses para determinar como o MySQL deve avaliá-los.

Dê uma olhada no exemplo abaixo:
SELECT *
FROM readers
WHERE (city = 'Bellevue' AND reg_year = '2020')
OR (books_read > 20);

A saída:
last_name first_name cidade reg_year books_read
Anderson Maria Seattle 2021 25
Jones Chris Bellevue 2020 12
Thompson Lora Seattle 2020 35
Farrell Brian Bellevue 2021 48
Smith Jeff Bellevue 2020 50
Peters Ana Bellevue 2020 10
Patterson João Bellevue 2020 11

Esta saída mostra alguns resultados correspondentes à condição da cidade de residência + ano de registro. Também inclui resultados correspondentes à segunda condição de ter lido mais de 20 livros.

Operador WHERE BETWEEN


O operador BETWEEN permite definir limites mais amplos. Suponha que a biblioteca queira obter a lista de seus leitores que ingressaram em 2019, 2020 e 2021. Em vez de enviar várias consultas ou usar o AND operador, podemos definir o intervalo para o WHERE condição usando o BETWEEN operador.

Para recuperar a lista de leitores que ingressaram entre 2019 e 2022, enviamos a seguinte consulta:
SELECT 
    last_Name, 
    first_Name, 
    reg_year
FROM
    readers
WHERE
    reg_year BETWEEN 2019 AND 2021
ORDER BY reg_year;

A saída:
last_name first_name reg_year
Anderson Maria 2019
Jones Chris 2019
Thompson Lora 2019
Farrell Brian 2019
Smith Jeff 2020
Peters Ana 2020
Patterson João 2020
Williams Marcar 2021
Caminhadas André 2021
Conceder Valentina 2021

Operador WHERE LIKE


A aplicação do operador LIKE permite usar a cláusula WHERE para selecionar determinados registros que incluem um padrão específico. Para definir esse padrão, usamos o sinal de porcentagem (%) para substituir um caractere ou uma string de vários caracteres de qualquer comprimento.

Os padrões mais comuns para MySQL SELECT WHERE LIKE são as seguintes:

WHERE valor LIKE 'abc% ‘ – localiza e retorna todos os valores começando com “abc”

WHERE valor LIKE '%abc' – encontra e retorna todos os valores que terminam com “abc”

WHERE valor LIKE '%abc%' – encontra e retorna valores com “abc” em qualquer lugar entre o início e o fim

Vamos dar uma olhada no WHERE LIKE exemplo. A empresa quer obter a lista de seus clientes dos EUA e do Reino Unido. A consulta é a seguinte:
SELECT ContactName, Country, City
FROM Customers
WHERE Country LIKE 'U%'
ORDER BY ContactName;

A saída é:
ContactName País Cidade
Helen Bennett Reino Unido Vacas
Simon Crowther Reino Unido Londres
Hari Kumar Reino Unido Londres
Howard Snyder EUA Eugene
Yoshi Latimer EUA Elgin
John Steel EUA Parede Walla
Jaime Torres EUA São Francisco
Fran Wilson EUA Portland

WHERE NOT LIKE exemplo


Há outro caso em que você precisa excluir alguns dados dos resultados. Podemos usar o MySQL WHERE NOT LIKE operador. Localiza e retorna os dados que não possuem caracteres específicos.

A empresa quer uma lista de seus clientes de todos os países, exceto Reino Unido e EUA. A sintaxe de WHERE NOT LIKE no MySQL ficará como abaixo:
SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT LIKE 'U%'
ORDER BY Country;

A saída:
ContactName País Cidade
Roland Mendel Áustria Graz
Georg Pipps Áustria Salzburgo
Catherine Dewey Bélgica Bruxelas
Pascale Cartrain Bélgica Charleroi
Elizabeth Lincoln Canadá Tsawassen
Yoshi Tannamuri Canadá Vancouver
Jean Fresnière Canadá Montreal
Jytte Petersen Dinamarca København
Palle Ibsen Dinamarca Arhus
Pirkko Koskitalo Finlândia Oulu
Matti Karttunen Finlândia Helsinque
Roleta Annette França Toulouse
Marie Bertrand França Paris
Maria Anders Alemanha Berlim
Hanna Mooss Alemanha Manheim

Operador WHERE IN


Usando o IN e NOT IN palavras-chave é outra opção para filtrar as linhas e recuperar apenas uma parte dos dados que correspondem aos nossos critérios rigorosos. O objetivo principal é reduzir o número de OR cláusulas em um SELECT demonstração.

MySQL WHERE IN apela para as linhas que contêm os valores que especificamos para WHERE doença. Por exemplo, queremos recuperar a lista de clientes que residem em vários países europeus. O WHERE IN sintaxe é a seguinte no MySQL:
SELECT ContactName, Country, City
FROM Customers
WHERE Country IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

Observe que colocamos nossos valores que especificam a condição de pesquisa entre parênteses. No caso de trabalhar com valores de texto, devemos colocá-los todos entre aspas simples. No entanto, se nossos valores forem numéricos, os listaremos sem aspas simples, por exemplo, (25, 35, 45).

A saída do MySQL WHERE IN acima cláusula no SELECT afirmação é:
ContactName País Cidade
Catherine Dewey Bélgica Bruxelas
Pascale Cartrain Bélgica Charleroi
Frédérique Citeaux França Estrasburgo
Laurence Lebihans França Marselha
Janine Labrune França Nantes
Martine Rancé França Lille
Alexander Feuer Alemanha Leipzig
Henriette Pfalzheim Alemanha Colônia
Horst Kloss Alemanha Cunewalde
Karin Josephs Alemanha Münster
Rita Müller Alemanha Estugarda
Thomas Hardy Reino Unido Londres
Victoria Ashworth Reino Unido Londres
Elizabeth Brown Reino Unido Manchester
Ann Devon Reino Unido Londres

WHERE NOT IN exemplo


O caso oposto é MySQL WHERE NOT IN cláusula. Ele é usado para garantir que sua consulta ignore as linhas que contêm os valores especificados para a condição. No exemplo acima, solicitamos clientes dos 4 países europeus definidos. O MySQL WHERE NOT IN SELECT consulta para a mesma solicitação retornará todos os clientes residentes em outros países, exceto aqueles 4 definidos anteriormente.
SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

A saída:
ContactName País Cidade
Patricio Simpson Argentina Buenos Aires
Sergio Gutiérrez Argentina Buenos Aires
Brian Citeaux Canadá Montreal
Laura Smith Canadá Toronto
Jane Green Canadá Toronto
Martine Rancé Canadá Vancouver
Alexander Feuer Canadá Arhus
Paolo Accorti Itália Roma
Giovanni Rovelli Itália Torino
Ana Moroni Itália Pavia

Observação :Recomendamos usar [NOT] EXISTS sobre [NOT] IN uma vez que o EXISTS operador lógico funciona mais rápido que IN , ao comparar conjuntos de dados usando uma subconsulta. Além disso, NOT EXISTS evitará resultados inesperados quando os dados de origem contiverem NULL valores.

Operador WHERE IS NULL


Para verificar se um valor é NULL ou não, use o IS NULL operador. A instrução a seguir usa o WHERE cláusula com o IS NULL operador para obter as linhas sem um valor no books_read coluna:
SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NULL;

A saída ficará assim:
last_name first_name reg_year books_read
Janett Overacker 2020 NULO
Lídia Swenson 2017 NULO
Albert Crepeau 2018 NULO
Anastasia Johnson 2021 NULO
Vai Smith 2017 NULO

exemplo WHERE NOT NULL


Ao contrário do comando anterior, WHERE IS NOT NULL , ao contrário, mostra apenas as linhas que contêm algum tipo de valor na coluna em questão. No exemplo a seguir, vamos selecionar apenas as linhas em que books_read coluna não está vazia:
SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NOT NULL;

Na saída, você verá apenas as linhas que contêm um valor no books_read coluna:
last_name first_name reg_year books_read
Cory Baster 2021 8
Maddison Winston 2022 3
Isabella Garsia 2014 45
Jeremy Koh 2022 1
Aaron Peterson 2021 15

WHERE EXISTS


O EXISTS operator checks if the subquery returns any value at all. Typically, this operator is used to indicate that at least one row in a table satisfies a certain condition.

In the example below,
SELECT last_name, first_name
FROM customers
WHERE EXISTS 
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)

WHERE NOT EXISTS


However, the NOT EXISTS operator is there for us in case we want to make sure whether there are rows in the table that do not satisfy a certain condition. For example, let’s find all products from the Products table for which there were no orders in the Orders table:
SELECT last_name, first_name
FROM customers
WHERE NOT EXISTS 
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)

There is a separate article in our blog for those willing to learn more about the difference between EXISTS and NOT EXISTS in SQL.

Using MySQL WHERE clause with comparison operators


As we know, the WHERE condition value can be any number, text, string, or subquery. Besides specifying the condition strictly, we can set a wider meaning for it by using the comparison operators. One example of a similar function is using the BETWEEN operador. Now, let us review other options to set the condition range.
Operator Description Example
= Equal to the value. It is applicable for almost any data type. SELECT * FROM VisitorsWHERE City =’London’;
<> or != Not equal to. It excludes the rows matching the value from the results. SELECT * FROM CustomersWHERE Country=’Germany’ AND City !=’Berlin’;
< Less than. Mostly applies to numbers and date/time. SELECT * FROM CustomersWHERE CustomerID <7;
> Greater than. Works in the same way, for numeric values and date/time. SELECT * FROM CustomersWHERE CustomerID> 10;
<= Less than or equal to. The results set includes the rows with the same values or less than the condition value. SELECT * FROM CustomersWHERE CustomerID <=5;
>= Greater than or equal to. The result set includes rows having the same values exceeding the condition values. SELECT * FROM CustomersWHERE CustomerID>=55;

In our example, we want to retrieve the list of customers with a customer ID lower than 90 who reside in the USA. The query is the following:
SELECT CustomerID, ContactName, City, Country 
FROM Customers
WHERE CustomerID < 90 AND Country ='USA';

The output is:
CustomerID ContactName City Country
65 Paula Wilson Albuquerque USA
55 Rene Phillips Anchorage USA
78 Liu Wong Butte USA
36 Yoshi Latimer Elgin USA
32 Howard Snyder Eugene USA
82 Helvetius Nagy Kirkland USA
48 Fran Wilson Portland USA
77 Liz Nixon Portland USA
45 Jaime Torres San Francisco USA
89 Karl Jablonski Seattle USA
55 Rene Phillips Anchorage USA

Summary


As you see, MySQL WHERE is among the most helpful clauses for all MySQL users. The variety of different logical operators lets you focus on the specific portion of data only, filter it correctly, and receive the results you need. Besides, modern professional tools for MySQL databases allow you to perform all tasks faster and easier. They take the burden of manual routines off your shoulders and make the performance much more stable and reliable. To sum up, working with a WHERE statement is not too complicated. However, it requires being familiar with the corresponding commands. The command-line tools are more oriented toward experienced tech-savvy users. On the contrary, dbForge Studio for MySQL can boast an intuitive graphical interface. The intelligent code completion feature will be of use while working with the WHERE clause, navigating the code, obtaining quick object information, and instantly performing syntax checks. Moreover, dbForge Query Builder will be of use to easily build WHERE clauses visually.

Useful Links
  • Joins in MySQL
  • MySQL update query