前面介绍了利用 SELECT 命令从表中获取数据。利用一种叫做 WHERE 子句的条件子句可以过滤结果。使用 WHERE 子句可以制定选择规则,从表中选择我们所需的记录。
语法格式
利用 SELECT 命令与 WHERE 子句从表中获取数据的一般语法格式如下所示:
SELECT field1, field2,...fieldN table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
可以使用逗号分隔一个或多个表,从而在使用 WHERE 子句时,包含多个条件。但是 WHERE 子句并非 SELECT 命令的一个可选部分。
可以在使用 WHERE 子句时指定任何条件。
可以通过 AND 或 OR 运算符来指定一个或多个条件。
WHERE 子句可以和 DELETE 或 UPDATE 命令一起使用,同样是用于指定条件。
WHERE 子句的运作方式就像编程语言中的 if 条件语句一样。它会将给定值与MySQL表中的字段值进行对比,如果两值相等,则返回MySQL表中字段值的所在的行。
下面这张表列出了 WHERE 子句中使用的一些运算符。
假设字段 A 保存 10 这个值,字段 B 保存着 20,那么:
运算符 | 说明 | 范例 |
---|---|---|
= | 检查两个操作数是否相等。如果相等,则条件为真。 | (A = B) 非真 |
!= | 检查两个操作数是否相等。如果不相等,则条件为真。 | (A != B) 为真 |
> | 检查左侧操作数是否大于右边的操作数。如果大于,则条件为真。 | (A > B) 非真 |
< | 检查左侧操作数是否小于右侧操作数。如果小于,则条件为真。 | (A < B) 为真 |
>= | 检查左侧操作数是否大于或等于右侧操作数。如果是,则条件为真。 | (A >= B) 非真 |
<= | 检查左侧操作数是否小于或等于右侧操作数。如果是,则条件为真 | (A <= B) 为真 |
WHERE 子句可以非常方便地获取表中选定的行,尤其与 MySQL 的 Join 一起使用时。Join 稍后将择章另述。
另外,为了加快搜索,往往使用主键搜索记录。
如果表中记录并不匹配给定条件,查询不会返回任何数据。
采用命令行方式获取数据
使用 SQL 的 SELECT 命令与 WHERE 子句获取 表 tutorials_tbl 中的选定数据。
范例
以下范例将返回表 tutorials_tbl 中作者名称(author name)为 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 函数 mysql_query(),同时配合使用 SQL 的 SELECT 命令与 WHERE 子句。先用 mysql_query() 执行 SQL 命令,再用另一 PHP 函数 mysql_fetch_array() 来获取所有选定数据。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); ?>
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程