我们已经看到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中使用与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); ?>