📜  MySQL-WHERE子句

📅  最后修改于: 2020-11-27 06:34:52             🧑  作者: Mango


我们已经看到了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子句可以与DELETE或UPDATE SQL命令一起使用,也可以指定条件。

WHERE子句的作用类似于任何编程语言中的if条件。该子句用于将给定值与MySQL表中可用的字段值进行比较。如果外部的给定值等于MySQL表中的可用字段值,则它将返回该行。

这是运算符的列表,可与WHERE子句一起使用。

假设字段A持有10,字段B持有20,则-

Operator Description Example
= Checks if the values of the two operands are equal or not, if yes, then the condition becomes true. (A = B) is not true.
!= Checks if the values of the two operands are equal or not, if the values are not equal then the condition becomes true. (A != B) is true.
> Checks if the value of the left operand is greater than the value of the right operand, if yes, then the condition becomes true. (A > B) is not true.
< Checks if the value of the left operand is less than the value of the right operand, if yes then the condition becomes true. (A < B) is true.
>= Checks if the value of the left operand is greater than or equal to the value of the right operand, if yes, then the condition becomes true. (A >= B) is not true.
<= Checks if the value of the left operand is less than or equal to the value of the right operand, if yes, then the condition becomes true. (A <= B) is true.

当您想从表中获取选定的行时,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脚本获取数据

您可以在WHERE CLAUSE中使用相同的SQL SELECT命令到PHP函数mysql_query()中。该函数用于执行SQL命令,以后可以使用另一个PHP函数mysql_fetch_array()来获取所有选定的数据。此函数以关联数组和/或数字数组的形式返回一行。如果没有更多行,此函数将返回FALSE。

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

 ".
      "Title: {$row['tutorial_title']} 
". "Author: {$row['tutorial_author']}
". "Submission Date : {$row['submission_date']}
". "--------------------------------
"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>