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

MySQL-WHERE-Klausel

Wir wissen, dass wir Daten mit dem SQL SELECT-Befehl aus MySQL-Tabellen lesen können.

Um Daten aus einer Tabelle unter Bedingungen auszuwählen, können Sie die WHERE-Klausel in die SELECT-Anweisung einfügen.

Syntax

Hier ist die allgemeine Syntax der SQL SELECT-Anweisung mit WHERE-Klausel, um Daten aus einer Datenbanktabelle zu lesen:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE Bedingung1 [AND [OR]] Bedingung2.....
  • In Abfrageanweisungen können Sie eine oder mehrere Tabellen verwenden, die durch Kommas getrennt sind, und WHERE-Anweisungen verwenden, um die Abfragebedingungen festzulegen.

  • Sie können in der WHERE-Klausel jede beliebige Bedingung angeben.

  • Sie können AND oder OR verwenden, um eine oder mehrere Bedingungen zu spezifizieren.

  • WHERE-Klausel kann auch in SQL-DELETE- oder UPDATE-Befehlen verwendet werden.

  • WHERE-Klausel ähnelt einem if-Bedingungsstatement in Programmiersprachen und liest spezifische Daten basierend auf den Wertefeldern einer MySQL-Tabelle.

Nachstehend ist eine Liste der Operator, die im WHERE-Satz verwendet werden können.

Die folgenden Beispiele in der Tabelle unterstellt, dass A ist 10, B ist 20

OperatorBeschreibungBeispiel
=Gleichheitszeichen, überprüft, ob die beiden Werte gleich sind, und gibt true zurück, wenn sie gleich sind(A = B) gibt false zurück.
, !=Ungleich, überprüft, ob die beiden Werte gleich sind, und gibt true zurück, wenn sie ungleich sind(A != B) gibt true zurück.
>Größer-Symbol, überprüft, ob der linke Wert größer als der rechte Wert ist, und gibt true zurück, wenn der linke Wert größer als der rechte Wert ist(A > B) gibt false zurück.
<Kleiner-Symbol, überprüft, ob der linke Wert kleiner als der rechte Wert ist, und gibt true zurück, wenn der linke Wert kleiner als der rechte Wert ist(A < B) gibt true zurück.
>=Größer-oder-Gleich-Symbol, überprüft, ob der linke Wert größer oder gleich dem rechten Wert ist, und gibt true zurück, wenn der linke Wert größer oder gleich dem rechten Wert ist(A >= B) gibt false zurück.
<=Kleiner-oder-Gleich-Symbol, überprüft, ob der linke Wert kleiner oder gleich dem rechten Wert ist, und gibt true zurück, wenn der linke Wert kleiner oder gleich dem rechten Wert ist(A <= B) gibt true zurück.

Wenn wir spezifische Daten in der MySQL-Tabelle lesen möchten, ist der WHERE-Teil sehr nützlich.

Die Verwendung der Primärschlüssel als Bedingung im WHERE-Teil der Abfrage ist sehr schnell.

Wenn die angegebenen Bedingungen keine übereinstimmenden Einträge in der Tabelle haben, gibt die Abfrage keine Daten zurück.

Daten vom Befehlszeilen-Protokoll lesen

Wir verwenden WHERE-Teil im SQL SELECT-Anweisung, um Daten der MySQL-Tabelle w zu lesen3Daten in der codebox_tbl-Tabelle:

Beispiel

Der folgende Beispiel liest w3in der codebox_tbl-Tabelle w3Alle Einträge mit dem codebox_author-Feldwert Sanjay:

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

Ausgabefolge:

Die Zeichenkettenvergleiche im WHERE-Teil von MySQL sind ohne Unterschied in Groß- und Kleinschreibung. Sie können das BINARY-Schlüsselwort verwenden, um zu bestimmen, dass die Zeichenkettenvergleiche im WHERE-Teil der Abfrage unterscheidlich in Groß- und Kleinschreibung sind.

Wie folgt ist ein Beispiel:

BINARY Schlüsselwort

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('Daten können nicht gelesen werden: ' . mysqli_error($conn));
}
echo '<h2">Grund教程网 MySQL WHERE 子句测试<h2">
echo '<table border="1><tr><td>教程 ID</td><td>Titel</td><td>Autor</td><td>Einreichungsdatum</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>';
// Speicher freigeben
mysqli_free_result($retval);
mysqli_close($conn);
?>

Die Ausgabe ist wie folgt: