MySQL ONDE

Resumo: neste tutorial, você aprenderá como usar a WHEREcláusula MySQL na SELECTinstrução para filtrar linhas do conjunto de resultados.

Introdução à cláusula WHERE do MySQL

A WHEREcláusula permite especificar uma condição de pesquisa para as linhas retornadas por uma consulta. O seguinte mostra a sintaxe da WHEREcláusula:

SELECT 
    select_list
FROM
    table_name
WHERE
    search_condition;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O search_conditioné uma combinação de uma ou mais expressões usando o operador lógico ANDe OR.NOT

No MySQL, um predicado é uma expressão booleana avaliada como TRUE,, FALSEou UNKNOWN.

A SELECTinstrução incluirá qualquer linha que satisfaça o search_conditionconjunto de resultados.

Além da SELECTinstrução, você pode usar a WHEREcláusula na instrução UPDATEou DELETEpara especificar quais linhas atualizar ou excluir.

Ao executar uma SELECTinstrução com uma WHEREcláusula, o MySQL avalia a WHEREcláusula após a FROMcláusula e antes das cláusulas SELECTe :ORDER BY

MySQL ONDE

Exemplos de cláusula WHERE do MySQL

Usaremos a employeestabela do banco de dados de exemplo para a demonstração:

1) Usando a cláusula WHERE com exemplo de operador de igualdade

A consulta a seguir usa a WHEREcláusula para localizar todos os funcionários cujos cargos são Sales Rep:

SELECT 
    lastname, 
    firstname, 
    jobtitle
FROM
    employees
WHERE
    jobtitle = 'Sales Rep';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+-----------+-----------+-----------+
| lastname  | firstname | jobtitle  |
+-----------+-----------+-----------+
| Jennings  | Leslie    | Sales Rep |
| Thompson  | Leslie    | Sales Rep |
| Firrelli  | Julie     | Sales Rep |
| Patterson | Steve     | Sales Rep |
| Tseng     | Foon Yue  | Sales Rep |
| Vanauf    | George    | Sales Rep |
| Bondur    | Loui      | Sales Rep |
| Hernandez | Gerard    | Sales Rep |
| Castillo  | Pamela    | Sales Rep |
| Bott      | Larry     | Sales Rep |
| Jones     | Barry     | Sales Rep |
| Fixter    | Andy      | Sales Rep |
| Marsh     | Peter     | Sales Rep |
| King      | Tom       | Sales Rep |
| Nishi     | Mami      | Sales Rep |
| Kato      | Yoshimi   | Sales Rep |
| Gerard    | Martin    | Sales Rep |
+-----------+-----------+-----------+
17 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

Neste exemplo, a SELECTinstrução examina todas as linhas da employeestabela e seleciona apenas as linhas cujos valores estão na jobTitlecoluna are Sales Rep.

2) Usando a cláusula WHERE com o operador AND

O exemplo a seguir usa a WHEREcláusula para localizar funcionários cujos cargos Sales Repe códigos de escritório são 1:

SELECT 
    lastname, 
    firstname, 
    jobtitle,
    officeCode
FROM
    employees
WHERE
    jobtitle = 'Sales Rep' AND 
    officeCode = 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+----------+-----------+-----------+------------+
| lastname | firstname | jobtitle  | officeCode |
+----------+-----------+-----------+------------+
| Jennings | Leslie    | Sales Rep | 1          |
| Thompson | Leslie    | Sales Rep | 1          |
+----------+-----------+-----------+------------+
2 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

Neste exemplo, a expressão na WHEREcláusula utiliza o ANDoperador para combinar duas condições:

jobtitle = 'Sales Rep' AND officeCode = 1;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O ANDoperador será avaliado como TRUEsomente se ambas as expressões forem avaliadas como TRUE. Portanto, a consulta retorna linhas cujos valores na jobTitlecoluna são Sales Repe officeCodesão 1.

3) Usando a cláusula WHERE do MySQL com o operador OR

Esta consulta encontra funcionários cujo cargo é Sales Repou funcionários que localizam o escritório com código de escritório 1:

SELECT 
    lastName, 
    firstName, 
    jobTitle, 
    officeCode
FROM
    employees
WHERE
    jobtitle = 'Sales Rep' OR 
    officeCode = 1
ORDER BY 
    officeCode , 
    jobTitle;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+-----------+-----------+--------------------+------------+
| lastName  | firstName | jobTitle           | officeCode |
+-----------+-----------+--------------------+------------+
| Murphy    | Diane     | President          | 1          |
| Bow       | Anthony   | Sales Manager (NA) | 1          |
| Jennings  | Leslie    | Sales Rep          | 1          |
| Thompson  | Leslie    | Sales Rep          | 1          |
| Firrelli  | Jeff      | VP Marketing       | 1          |
| Patterson | Mary      | VP Sales           | 1          |
| Firrelli  | Julie     | Sales Rep          | 2          |
| Patterson | Steve     | Sales Rep          | 2          |
| Tseng     | Foon Yue  | Sales Rep          | 3          |
| Vanauf    | George    | Sales Rep          | 3          |
| Bondur    | Loui      | Sales Rep          | 4          |
| Hernandez | Gerard    | Sales Rep          | 4          |
| Castillo  | Pamela    | Sales Rep          | 4          |
| Gerard    | Martin    | Sales Rep          | 4          |
| Nishi     | Mami      | Sales Rep          | 5          |
| Kato      | Yoshimi   | Sales Rep          | 5          |
| Fixter    | Andy      | Sales Rep          | 6          |
| Marsh     | Peter     | Sales Rep          | 6          |
| King      | Tom       | Sales Rep          | 6          |
| Bott      | Larry     | Sales Rep          | 7          |
| Jones     | Barry     | Sales Rep          | 7          |
+-----------+-----------+--------------------+------------+
21 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

O ORoperador será avaliado TRUEapenas se uma das expressões for avaliada como TRUE:

jobtitle = 'Sales Rep' OR officeCode = 1Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Portanto, a consulta retorna qualquer funcionário que tenha o cargo de Representante de Vendas ou código de escritório 1.

4) Usando a cláusula WHERE com o exemplo do operador BETWEEN

O BETWEENoperador retorna TRUEse um valor estiver em um intervalo de valores:

expression BETWEEN low AND highLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A consulta a seguir localiza funcionários localizados em escritórios cujo código de escritório é de 1 a 3:

SELECT 
    firstName, 
    lastName, 
    officeCode
FROM
    employees
WHERE
    officeCode BETWEEN 1 AND 3
ORDER BY officeCode;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+-----------+-----------+------------+
| firstName | lastName  | officeCode |
+-----------+-----------+------------+
| Diane     | Murphy    | 1          |
| Mary      | Patterson | 1          |
| Jeff      | Firrelli  | 1          |
| Anthony   | Bow       | 1          |
| Leslie    | Jennings  | 1          |
| Leslie    | Thompson  | 1          |
| Julie     | Firrelli  | 2          |
| Steve     | Patterson | 2          |
| Foon Yue  | Tseng     | 3          |
| George    | Vanauf    | 3          |
+-----------+-----------+------------+
10 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

5) Usando a cláusula WHERE com o exemplo do operador LIKE

O LIKEoperador avalia TRUEse um valor corresponde a um padrão especificado.

Para formar um padrão, você usa os curingas %e _. O %curinga corresponde a qualquer sequência de zero ou mais caracteres, enquanto o _curinga corresponde a qualquer caractere único.

A consulta a seguir localiza os funcionários cujos sobrenomes terminam com a string 'son':

SELECT 
    firstName, 
    lastName
FROM
    employees
WHERE
    lastName LIKE '%son'
ORDER BY firstName;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+-----------+-----------+
| firstName | lastName  |
+-----------+-----------+
| Leslie    | Thompson  |
| Mary      | Patterson |
| Steve     | Patterson |
| William   | Patterson |
+-----------+-----------+
4 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

6) Usando a cláusula WHERE com o exemplo do operador IN

O INoperador retorna TRUEse um valor corresponder a qualquer valor em uma lista.

value IN (value1, value2,...)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O exemplo a seguir utiliza a WHEREcláusula com a INoperadora para localizar funcionários que estão localizados nos escritórios com os códigos 1, 2 e 3:

SELECT 
    firstName, 
    lastName, 
    officeCode
FROM
    employees
WHERE
    officeCode IN (1 , 2, 3)
ORDER BY 
    officeCode;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+-----------+-----------+------------+
| firstName | lastName  | officeCode |
+-----------+-----------+------------+
| Diane     | Murphy    | 1          |
| Mary      | Patterson | 1          |
| Jeff      | Firrelli  | 1          |
| Anthony   | Bow       | 1          |
| Leslie    | Jennings  | 1          |
| Leslie    | Thompson  | 1          |
| Julie     | Firrelli  | 2          |
| Steve     | Patterson | 2          |
| Foon Yue  | Tseng     | 3          |
| George    | Vanauf    | 3          |
+-----------+-----------+------------+
10 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

7) Usando a cláusula WHERE do MySQL com o operador IS NULL

Para verificar se um valor é NULLou não, você usa o IS NULLoperador, não o operador igual ( =). O IS NULLoperador retorna TRUEse um valor for NULL.

value IS NULLLinguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

No mundo do banco de dados, NULLé um marcador que indica que um valor está faltando ou é desconhecido. NULL não é equivalente ao número 0 ou a uma string vazia.

A instrução a seguir usa a WHEREcláusula com o IS NULLoperador para obter as linhas com os valores na reportsTocoluna NULL:

SELECT 
    lastName, 
    firstName, 
    reportsTo
FROM
    employees
WHERE
    reportsTo IS NULL;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+----------+-----------+-----------+
| lastName | firstName | reportsTo |
+----------+-----------+-----------+
| Murphy   | Diane     |      NULL |
+----------+-----------+-----------+
1 row in set (0.01 sec)Linguagem de código:  texto simples  ( texto simples )

8) Usando a cláusula WHERE do MySQL com operadores de comparação

A tabela a seguir mostra os operadores de comparação que podem ser usados ​​para formar a expressão na WHEREcláusula.

Operador Descrição
= Igual a. Você pode usá-lo com quase qualquer tipo de dados.
<> ou! = Não é igual a
< Menor que. Normalmente você o usa com tipos de dados numéricos e de data/hora.
> Maior que.
<= Menos que ou igual a
>= Melhor que ou igual a

A consulta a seguir usa o operador diferente de (<>) para localizar todos os funcionários que não são Sales Rep:

SELECT 
    lastname, 
    firstname, 
    jobtitle
FROM
    employees
WHERE
    jobtitle <> 'Sales Rep';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+-----------+-----------+----------------------+
| lastname  | firstname | jobtitle             |
+-----------+-----------+----------------------+
| Murphy    | Diane     | President            |
| Patterson | Mary      | VP Sales             |
| Firrelli  | Jeff      | VP Marketing         |
| Patterson | William   | Sales Manager (APAC) |
| Bondur    | Gerard    | Sale Manager (EMEA)  |
| Bow       | Anthony   | Sales Manager (NA)   |
+-----------+-----------+----------------------+
6 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

A consulta a seguir localiza funcionários cujo código do escritório é maior que 5:

SELECT 
    lastname, 
    firstname, 
    officeCode
FROM
    employees
WHERE 
    officecode > 5;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+-----------+-----------+------------+
| lastname  | firstname | officeCode |
+-----------+-----------+------------+
| Patterson | William   | 6          |
| Bott      | Larry     | 7          |
| Jones     | Barry     | 7          |
| Fixter    | Andy      | 6          |
| Marsh     | Peter     | 6          |
| King      | Tom       | 6          |
+-----------+-----------+------------+
6 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

A consulta a seguir retorna funcionários com código de escritório menor ou igual a 4 (<=4):

SELECT 
    lastname, 
    firstname, 
    officeCode
FROM
    employees
WHERE 
    officecode <= 4;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+-----------+-----------+------------+
| lastname  | firstname | officeCode |
+-----------+-----------+------------+
| Murphy    | Diane     | 1          |
| Patterson | Mary      | 1          |
| Firrelli  | Jeff      | 1          |
| Bondur    | Gerard    | 4          |
| Bow       | Anthony   | 1          |
| Jennings  | Leslie    | 1          |
| Thompson  | Leslie    | 1          |
| Firrelli  | Julie     | 2          |
| Patterson | Steve     | 2          |
| Tseng     | Foon Yue  | 3          |
| Vanauf    | George    | 3          |
| Bondur    | Loui      | 4          |
| Hernandez | Gerard    | 4          |
| Castillo  | Pamela    | 4          |
| Gerard    | Martin    | 4          |
+-----------+-----------+------------+
15 rows in set (0.00 sec)Linguagem de código:  texto simples  ( texto simples )

Resumo

  • Use a WHEREcláusula para filtrar linhas por uma condição.
  • O MySQL avalia a WHEREcláusula após a FROMcláusula e antes das cláusulas SELECTe ORDER BY.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *