前面介绍了利用 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 的所有记录。