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:- Avalie o
FROM
cláusula para identificar a tabela de destino. - Prossiga para
WHERE
cláusula para avaliar os critérios de seleção de dados. - 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