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

Préfixe WHERE MySQL

Nous savons que l'on peut lire des données à partir d'une table MySQL en utilisant une requête SELECT SQL.

Pour sélectionner des données conditionnellement à partir d'une table, vous pouvez ajouter la clause WHERE à la requête SELECT.

Syntaxe

Voici la syntaxe générale de la clause WHERE dans une requête SELECT SQL pour lire des données dans une table.

SELECT champ1, champ2,...champN FROM nom_de_table1, nom_de_table2...
[WHERE condition1 [AND [OR]] condition2.....
  • Dans une requête SQL, vous pouvez utiliser une ou plusieurs tables, séparées par des virgules, et définir les conditions de recherche avec la clause WHERE.

  • Vous pouvez spécifier n'importe quelle condition dans la clause WHERE.

  • Vous pouvez spécifier une ou plusieurs conditions en utilisant AND ou OR.

  • La clause WHERE peut également être utilisée avec les commandes DELETE ou UPDATE en SQL.

  • La clause WHERE est similaire à une condition if dans un langage de programmation, elle permet de lire des données spécifiques selon les valeurs des champs d'une table MySQL.

以下为操作符列表,可用于 WHERE 子句中。

下表中示例假定 A 为 10, B 为 20

操作符描述示例
=等号,检测两个值是否相等,如果相等返回true(A = B) 返回false。
, !=不等于,检测两个值是否相等,如果不相等返回true(A != B) 返回 true。
>大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true(A > B) 返回false。
<小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true(A < B) 返回 true。
>=大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true(A >= B) 返回false。
<=小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true(A <= B) 返回 true。

如果我们想在 MySQL 数据表中读取指定的数据,WHERE 子句是非常有用的。

使用主键来作为 WHERE 子句的条件查询是非常快速的。

如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据。

从命令提示符中读取数据

我们将在SQL SELECT语句使用WHERE子句来读取MySQL数据表 w3codebox_tbl 中的数据:

示例

以下示例将读取 w3codebox_tbl 表中 w3codebox_author 字段值为 Sanjay 的所有记录:

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

输出结果:

MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY mot-clé 来设定 WHERE 子句的字符串比较是区分大小写的。

如下示例:

BINARY mot-clé

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('Impossible de lire les données : ' . mysqli_error($conn));
}
echo '<h2">Test de l'expression WHERE du tutoriel de base de données MySQL<h2">
echo '<table border="1><tr><td>ID du tutoriel</td><td>Titre</td><td>Auteur</td><td>Date de soumission</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>';
// Libération de la mémoire
mysqli_free_result($retval);
mysqli_close($conn);
?>

Les résultats de la sortie sont affichés comme suit :