MariaDB必知必会
上QQ阅读APP看书,第一时间看更新

6.1 WHERE子句

数据库通常包含大量数据,你很少需要检索表中所有行。通常,你想要为特定的操作或者报表,从表数据中提取出子集。仅仅检索你想要的数据牵涉搜索条件(search criteria),也就是过滤条件(filter condition)。

在SELECT语句中,可通过WHERE子句指定搜索条件来过滤数据。WHERE子句在表名(FROM子句)之后指定,如下:

▼ 输入

▼ 分析

这条语句从products表中检索出两列,没有返回所有行,而是返回prod_price值为2.50的行。如下:

▼ 输出

这个例子使用了一个简单的相等测试:它检查某列是否有指定的值,并且依此过滤数据。然而SQL可以让你做的事比相等测试更多。

提示

SQL和应用程序过滤 数据也可以在应用程序的层面上过滤。为此,SQL的SELECT语句为客户端应用提供比实际需求更多的检索数据,之后客户端代码循环读取返回的数据来提取需要的行。

一般地,我们不推荐以上做法。由于数据库已经优化,在执行过滤时既快速又高效。让客户端应用(或者开发语言)完成数据库的工作会影响应用的性能并且让应用不能很好地扩展。此外,如果数据在客户端过滤,服务器不得不通过网络连接发送不需要的数据,导致网络带宽资源的浪费。

警告

WHERE子句的位置 当同时使用ORDERBY和WHERE子句时,确保ORDERBY子句跟在WHERE子句之后;否则,会产生错误。(见第5章获取更多使用ORDERBY的信息。)