MySQL - WHERE子句

我们已经看到SQL SELECT 命令从MySQL表中获取数据.我们可以使用一个名为 WHERE Clause 的条件子句来过滤掉结果.使用此WHERE子句,我们可以指定一个选择条件来从表中选择所需的记录.

语法

以下代码块具有通用带有WHERE子句的SELECT命令的SQL语法,用于从MySQL表中获取数据 :

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....


  • 您可以使用一个或多个用逗号分隔的表来使用WHERE子句包含各种条件,但WHERE子句是SELECT命令的可选部分.

  • 您可以使用WHERE子句指定任何条件.

  • 您可以使用 AND

  • WHERE子句可以与DELETE或UPDATE SQL命令一起使用来指定条件.

WHERE clau se在任何编程语言中都像 if condition .此子句用于将给定值与MySQL表中可用的字段值进行比较.如果来自outside的给定值等于MySQL表中的可用字段值,则返回该行.

这是运算符列表,可以与

假设字段A保持10,字段B保持20,然后&减去;

运算符描述示例
=检查两个操作数的值是否相等,如果是,则条件变为真.(A = B)不是真的.
!=检查两个操作数的值是否相等,如果值不相等则条件变为真.(A!= B)为真.
>检查左操作数的值是否更大THA n右操作数的值,如果是,则条件变为真.(A> B)不是真的.
<检查左操作数的值是否小于右操作数的值,如果是,则条件变为真.(A< B)为真.
>=检查左操作数的值是否为大于或等于右操作数的值,如果是,则条件变为真.(A> = B)不成立.
<=检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真.(A< = B)为真.

当您想从表中获取所选行时,WHERE子句非常有用,尤其是当您使用 MySQL Join 时.联接将在另一章中讨论.

通常使用主键搜索记录以加快搜索速度.

如果给定条件与表中的任何记录都不匹配,则查询不会返回任何行.

从命令提示符中获取数据

这将使用带有WHERE子句的SQL SELECT命令从MySQL表中获取所选数据 -   tutorials_tbl .

示例

以下示例将返回 tutorials_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脚本获取数据

您可以在PHP中使用与WHERE CLAUSE相同的SQL SELECT命令function mysql_query().此函数用于执行SQL命令,稍后可以使用另一个PHP函数 mysql_fetch_array()来获取所有选定的数据.此函数将行作为关联数组,数字数组或两者返回.如果没有更多行,则此函数返回FALSE.

示例

以下示例将返回 tutorials_tbl中的所有记录作者姓名为 Sanjay :

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }

   $sql = 'SELECT tutorial_id, tutorial_title, 
      tutorial_author, submission_date
      FROM tutorials_tbl
      WHERE tutorial_author = "Sanjay"';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );

   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }

   while($row = mysql_fetch_array($retval, MYSQL_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";
   mysql_close($conn);
?>