12.3.4 条件查询
在实际应用中,通常不需要查找表中的所有记录,而只需查找满足某些条件的特定记录。在SQL中,可以在SELECT语句中使用WHERE子句指定查询条件,从表中查找出特定的行。例如,下面的SQL语句找出表users中用户名叫Mary的用户信息。
因为WHERE子句中的列通常是用来搜索的字段,因此,一般会为这样的字段建立索引。WHERE子句可能会匹配到多行数据结果,如下所示的SQL语句,就可以查询出多行满足WHERE条件的记录。
这句SQL语句在表users中查找那些注册时间在2011年3月25日8点以后的用户信息,一共有两行记录匹配,MySQL会将其全部列出。
WHERE子句中可以同时出现多个查询条件,这些查询条件之间使用逻辑运算符AND或OR连接。使用AND连接的查询条件全部满足时,WHERE子句才会匹配相关记录。使用OR连接的查询条件,只要有其中之一满足,WHERE子句就会匹配相关记录。
(1)下面是一个使用AND连接查询条件的WHERE子句及其查询结果。
这句SQL语句表示,在表users中查找用户名为Mary并且注册时间在2011年3月25日8点以后的用户,表users中有一条记录满足WHERE子句的查询条件,MySQL将其列出。
(2)下面的示例是在WHERE子句中使用OR连接查询条件的SQL语句及其查询结果。
这句SQL语句表示,在表users中查找用户名为Mary或者注册时间在2011年3月27日0点之后的用户,表users中有两条记录满足WHERE子句的查询条件,MySQL将其全部列出。尽管用户名为Mary的记录,其注册时间在2011年3月27日0点之前,但因其满足WHERE子句的查询条件之一:name='Mary',所以这条记录也会被列出。