English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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 子句的字符串比较是区分大小写的。
如下示例:
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 函数的 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 :