English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Cláusula WHERE MySQL

Nós sabemos usar a cláusula SELECT SQL para ler dados de uma tabela do MySQL.

Para selecionar dados com base em condições, você pode adicionar a cláusula WHERE à consulta SELECT.

Sintaxe

Aqui está a sintaxe comum do SELECT SQL para ler dados de uma tabela usando a cláusula WHERE:

SELECT campo1, campo2,...campoN FROM nome_da_tabela1, nome_da_tabela2...
[WHERE condição1 [AND [OR]] condição2.....
  • Em uma consulta, você pode usar uma ou mais tabelas, separadas por vírgula, e usar a cláusula WHERE para definir as condições de consulta.

  • Você pode especificar qualquer condição na cláusula WHERE.

  • Você pode especificar uma ou mais condições usando AND ou OR.

  • A cláusula WHERE também pode ser aplicada nos comandos DELETE ou UPDATE do SQL.

  • A cláusula WHERE é semelhante a uma condição if em linguagens de programação, usada para ler dados específicos de uma tabela do MySQL com base no valor dos campos.

A seguir está a lista de operadores, que podem ser usados na cláusula WHERE.

Os exemplos na tabela a seguir assumem que A é 10, B é 20

OperadorDescriçãoExemplo
=Igual a, verifica se os dois valores são iguais, retornando true se eles forem iguais(A = B) retorna false.
, !=Diferente de, verifica se os dois valores são iguais, retornando true se eles não forem iguais(A != B) retorna true.
>Maior que, verifica se o valor à esquerda é maior do que o valor à direita, retornando true se o valor à esquerda for maior do que o valor à direita(A > B) retorna false.
<Menor que, verifica se o valor à esquerda é menor do que o valor à direita, retornando true se o valor à esquerda for menor do que o valor à direita(A < B) retorna true.
>=Maior ou igual a, verifica se o valor à esquerda é maior ou igual ao valor à direita, retornando true se o valor à esquerda for maior ou igual ao valor à direita(A >= B) retorna false.
<=Menor ou igual a, verifica se o valor à esquerda é menor ou igual ao valor à direita, retornando true se o valor à esquerda for menor ou igual ao valor à direita(A <= B) retorna true.

Se quisermos ler dados específicos de uma tabela do MySQL, a cláusula WHERE é muito útil.

Usar a chave primária como condição da cláusula WHERE é muito rápido.

Se a condição fornecida não tiver nenhum registro correspondente na tabela, a consulta não retornará nenhum dado.

Lendo dados do prompt de comando

Usaremos a cláusula WHERE na instrução SELECT para ler os dados da tabela w do MySQL3Os dados na codebox_tbl:

Exemplo

O seguinte exemplo lê w3na tabela codebox_tbl w3Todos os registros onde o campo codebox_author tem o valor Sanjay:

SELECT * from w3codebox_tbl WHERE w3codebox_author='基础教程网';

Resultados da saída:

A comparação de strings no WHERE do MySQL é insensível a maiúsculas e minúsculas. Você pode usar a palavra-chave BINARY para definir que a comparação de strings no WHERE é sensível a maiúsculas e minúsculas.

A seguir, um exemplo:

BINARY palavra-chave

mysql> SELECT * from w3codebox_tbl WHERE BINARY w3codebox_author='oldtoolbag.com';
Empty set (0.01 sec)
 
mysql> SELECT * from w3codebox_tbl WHERE BINARY w3codebox_author='oldtoolbag.com';
+----------+-------------+--------------+-----------------+
| w3codebox_id | w3codebox_title | w3codebox_author | submission_date |
+----------+-------------+--------------+-----------------+
|        1 | 学习 PHP           | oldtoolbag.com           | 2018-04-14      |
|        2 | 学习 MySQL           | oldtoolbag.com           | 2018-04-14      |
|        3 | JAVA 教程           | oldtoolbag.com           | 2018-04-14      |
+----------+-------------+--------------+-----------------+
3 rows in set (0.00 sec)

示例中使用了 BINARY 关键字,是区分大小写的,所以 w3codebox_author='oldtoolbag.com' 的查询条件是没有数据的。

使用PHP脚本读取数据

你可以使用 PHP 函数的 mysqli_query() 及相同的 SQL SELECT 带上 WHERE 子句的命令来获取数据。

该函数用于执行 SQL 命令,然后通过 PHP 函数 mysqli_fetch_array() 来输出所有查询的数据。

在线示例

以下示例将从 w3codebox_tbl 表中返回使用 w3codebox_author 字段值为 oldtoolbag.com 的记录:

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('连接失败: ' . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn, "set names utf8);
 
// 读取 w3codebox_author 为 oldtoolbag.com 的数据
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl
        WHERE w3codebox_author="oldtoolbag.com"';
 
mysqli_select_db($conn, 'w3codebox');
$retval = mysqli_query($conn, $sql);
if(! $retval)
{
    die('Não foi possível ler os dados: ' . mysqli_error($conn));
}
echo '<h2">Teste da cláusula WHERE do MySQL em baseTutorialMySQL<h2">
echo '<table border="1><tr><td> ID do tutorial</td><td>título</td><td>autor</td><td>data de submissão</td></tr>';
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
    echo "<tr><td> {$row['w3codebox_id']}</td> ".
         "<td>{$row['w3codebox_title']} </td> ".
         "<td>{$row['w3codebox_author']} </td> ".
         "<td>{$row['submission_date']} </td> ".
         "</tr>";
}
echo '</table>';
// Liberar memória
mysqli_free_result($retval);
mysqli_close($conn);
?>

Os resultados de saída são exibidos conforme abaixo: