![MariaDB必知必会](https://wfqqreader-1252317822.image.myqcloud.com/cover/943/34339943/b_34339943.jpg)
上QQ阅读APP看书,第一时间看更新
6.1 WHERE子句
数据库通常包含大量数据,你很少需要检索表中所有行。通常,你想要为特定的操作或者报表,从表数据中提取出子集。仅仅检索你想要的数据牵涉搜索条件(search criteria),也就是过滤条件(filter condition)。
在SELECT语句中,可通过WHERE子句指定搜索条件来过滤数据。WHERE子句在表名(FROM子句)之后指定,如下:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/30-i.jpg?sign=1739503638-j1TFB12w9KKy6t5AOq58rjBdgrFWMJCt-0-0125d356983c42bba7c1e287ef95115e)
▼ 分析
这条语句从products表中检索出两列,没有返回所有行,而是返回prod_price值为2.50的行。如下:
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/30a-i.jpg?sign=1739503638-qmIydxjmrglrRaiVvMzgYQ1lKxzsSB9d-0-8df26a705f43dc61779e41ce5ecca84e)
这个例子使用了一个简单的相等测试:它检查某列是否有指定的值,并且依此过滤数据。然而SQL可以让你做的事比相等测试更多。
提示
SQL和应用程序过滤 数据也可以在应用程序的层面上过滤。为此,SQL的SELECT语句为客户端应用提供比实际需求更多的检索数据,之后客户端代码循环读取返回的数据来提取需要的行。
一般地,我们不推荐以上做法。由于数据库已经优化,在执行过滤时既快速又高效。让客户端应用(或者开发语言)完成数据库的工作会影响应用的性能并且让应用不能很好地扩展。此外,如果数据在客户端过滤,服务器不得不通过网络连接发送不需要的数据,导致网络带宽资源的浪费。
警告
WHERE子句的位置 当同时使用ORDERBY和WHERE子句时,确保ORDERBY子句跟在WHERE子句之后;否则,会产生错误。(见第5章获取更多使用ORDERBY的信息。)