MySQL WHERE 子句

  • WHERE子句

    我们已经看到了SQL SELECT命令从MySQL表中获取数据。我们可以使用称为WHERE子句的条件子句来过滤结果。使用此WHERE子句,我们可以指定选择条件以从表中选择所需的记录。
    以下代码块具有SELECT命令的通用SQL语法和WHERE子句,可从MySQL表中获取数据
    SELECT field1, field2,...fieldN table_name1, table_name2...
    [WHERE condition1 [AND [OR]] condition2.....
    • 您可以使用WHERE子句使用一个或多个用逗号分隔的表来包含各种条件,但是WHERE子句是SELECT命令的可选部分。
    • 您可以使用WHERE子句指定任何条件。
    • 您可以使用ANDOR运算符指定多个条件。
    • WHERE子句可以与DELETEUPDATE SQL命令一起使用,也可以指定条件。
    WHERE子句的作品就像一个if条件中的任何编程语言。该子句用于将给定值与MySQL表中可用的字段值进行比较。如果外部的给定值等于MySQL表中的可用字段值,则它将返回该行。这是运算符的列表,可以与WHERE子句一起使用。假设字段A持有10,而字段B持有20,则
    操作符 描述 例子
    = 检查两个操作数的值是否相等,如果是,则条件为真。 (A = B) 为假。
    != 检查两个操作数的值是否相等,如果值不相等,则条件为真。 (A!= B)为真。
    > 检查左操作数的值是否大于右操作数的值,如果是,则条件变为true。 (A > B)为假。
    < 检查左操作数的值是否小于右操作数的值,如果是,则条件为真。 (A < B)为真。
    > = 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件变为true。 (A> = B)为假。
    <= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件为true。 (A <= B)为真。
    当您想从表中获取选定的行时,WHERE子句非常有用,尤其是当您使用MySQL Join时。连接在另一章中讨论。通常的做法是使用主键搜索记录,以加快搜索速度。如果给定条件与表中的任何记录都不匹配,则查询将不返回任何行。
  • 从命令提示符中获取数据

    这将使用带有WHERE子句的SQL SELECT命令从MySQL表– tutorials_tbl中获取所选数据。
    下面的示例将返回authors_tbl表中所有记录的作者姓名为Sanjay。
    root@host# mysql -u root -p password;
    Enter password:*******
    mysql> use TUTORIALS;
    Database changed
    mysql> SELECT * from tutorials_tbl WHERE tutorial_author = 'Sanjay';
    +-------------+----------------+-----------------+-----------------+
    | tutorial_id | tutorial_title | tutorial_author | submission_date |
    +-------------+----------------+-----------------+-----------------+
    |      3      | JAVA Tutorial  |      Sanjay     |    2007-05-21   |      
    +-------------+----------------+-----------------+-----------------+
    1 rows in set (0.01 sec)
    
    mysql>
    除非对字符串执行LIKE比较,否则比较不区分大小写。您可以使用BINARY关键字使搜索区分大小写,如下所示:
    root@host# mysql -u root -p password;
    Enter password:*******
    mysql> use TUTORIALS;
    Database changed
    mysql> SELECT * from tutorials_tbl \
       WHERE BINARY tutorial_author = 'sanjay';
    Empty set (0.02 sec)
    
    mysql>
  • 使用PHP脚本获取数据

    您可以在WHERE CLAUSE中使用相同的SQL SELECT命令到PHP函数mysqli_query()中。该函数用于执行SQL命令,以后可以使用另一个PHP函数mysqli_fetch_array()来获取所有选定数据。此函数以关联数组和/或数字数组的形式返回一行。如果没有更多行,此函数将返回FALSE。
    以下示例将返回authors_tbl表中所有记录的作者姓名为Sanjay的记录
    $dbhost = 'mysql';
    $dbuser = 'test';
    $dbpass = '123456';
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass);
    
    if(! $conn ) {
        die('Could not connect: ' . mysqli_error($conn));
    }
    
    $sql = 'SELECT tutorial_id, tutorial_title, 
          tutorial_author, submission_date
          FROM tutorials_tbl
          WHERE tutorial_author = "Sanjay"';
    
    mysqli_select_db('mydb');
    $retval = mysqli_query( $conn, $sql );
    
    if(! $retval ) {
        die('Could not get data: ' . mysqli_error($conn));
    }
    
    while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) {
        echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
            "Title: {$row['tutorial_title']} <br> ".
            "Author: {$row['tutorial_author']} <br> ".
            "Submission Date : {$row['submission_date']} <br> ".
            "--------------------------------<br>";
    }
    
    echo "Fetched data successfully\n";
    mysqli_close($conn);
    尝试一下