阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      MySQL WHERE 子句

      MySQL WHERE 子句

      我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。

      如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。

      语法

      以下是 SQL SELECT 语句使用 WHERE 子句从数据表中读取数据的通用语法:

      SELECT field1, field2,...fieldN FROM table_name1, table_name2...
      [WHERE condition1 [AND [OR]] condition2.....
      
      
      • 查询语句中你可以使用一个或者多个表,表之间使用逗号,分割,并使用 WHERE 语句来设定查询条件。
      • 你可以在 WHERE 子句中指定任何条件。
      • 你可以使用 AND 或者 OR 指定一个或多个条件。
      • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
      • WHERE 子句类似于程序语言中的 if 条件,根据 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 数据表 axihe_tbl 中的数据:

      实例

      以下实例将读取 axihe_tbl 表中 axihe_author 字段值为 Sanjay 的所有记录:

      SQL SELECT WHERE 子句

      SELECT * from axihe_tbl WHERE axihe_author=‘阿西河前端教程’;

      输出结果:

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

      如下实例:

      BINARY 关键字

      mysql> SELECT * from axihe_tbl WHERE BINARY axihe_author='axihe.com';
      Empty set (0.01 sec)
      
      mysql> SELECT * from axihe_tbl WHERE BINARY axihe_author='axihe.COM';
      +-----------+---------------+---------------+-----------------+
      | axihe_id | axihe_title  | axihe_author | submission_date |
      +-----------+---------------+---------------+-----------------+
      | 3         | JAVA 教程   | axihe.COM    | 2016-05-06      |
      | 4         | 学习 Python | axihe.COM    | 2016-03-06      |
      +-----------+---------------+---------------+-----------------+
      2 rows in set (0.01 sec)
      

      实例中使用了 BINARY 关键字,是区分大小写的,所以 axihe_author=‘axihe.com’ 的查询条件是没有数据的。

      使用 PHP 脚本读取数据

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

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

      实例

      以下实例将从 axihe_tbl 表中返回使用 axihe_author 字段值为 axihe.COM 的记录:

      MySQL WHERE 子句测试:

      <?php
      $dbhost = 'localhost:3306';  // 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");
      
      // 读取 axihe_author 为 axihe.COM 的数据
      $sql = 'SELECT axihe_id, axihe_title,
              axihe_author, submission_date
              FROM axihe_tbl
              WHERE axihe_author="axihe.COM"';
      
      mysqli_select_db( $conn, 'axihe' );
      $retval = mysqli_query( $conn, $sql );
      if(! $retval )
      {
          die('无法读取数据: ' . mysqli_error($conn));
      }
      echo '<h2>阿西河前端教程 MySQL WHERE 子句测试<h2>';
      echo '<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>';
      while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
      {
          echo "<tr><td> {$row['axihe_id']}</td> ".
               "<td>{$row['axihe_title']} </td> ".
               "<td>{$row['axihe_author']} </td> ".
               "<td>{$row['submission_date']} </td> ".
               "</tr>";
      }
      echo '</table>';
      // 释放内存
      mysqli_free_result($retval);
      mysqli_close($conn);
      ?>
      

      输出结果如下所示:

      目录
      目录