6.2 组合查询条件
在前一章提到的WHERE子句进行查询时,WHERE子句后面的搜索条件只是单一的。实际上,可以通过布尔运算符AND和OR,将多个单独的搜索条件结合在一个WHERE子句中,形成一个复合的搜索条件。当对复合搜索条件求值时,DBMS对每个单独的搜索条件求值,然后执行布尔运算来决定整个WHERE子句的值是True还是False。
6.2.1 AND运算符
在WHERE子句中,AND运算符表示“与”的关系,即AND在结合两个布尔表达式时,只有在两个表达式都为True时,才传回True,从而使整个WHERE子句求值为True。AND运算符的真值表如表6-2所示。
表6-2 AND真值表
表 达 式 一 | 表 达 式 二 | 结 果 |
True | True | True |
True | False | False |
True | NULL | NULL |
False | False | False |
False | NULL | False |
NULL | NULL | NULL |
注意 NULL与Fasle进行AND运算时,结果为False而不是NULL。两个表达式的顺序不影响其结果,也就是True和False取AND运算的结果与False和True的结果相同。
语法如下。
SELECT column FROM table_name WHERE condition1 AND condition2 |
在WHERE子句中,通过AND运算符连接了两个查询条件condition1和condition2。只有同时满足这两个条件的记录,WHERE子句求值为True,此时DBMS将当前记录包括在结果表中;如果WHERE子句求值为False或NULL,则DBMS排除该值。
实例1 使用AND运算符实现条件查询
从TEACHER表中查询年龄(AGE)大于30,且性别(TSEX)为女的所有教师的所有信息。实例代码:
SELECT * FROM TEACHER WHERE AGE >30 AND TSEX='女' ORDER BY AGE |
运行结果如图6.1所示。
图6.1 年龄大于30岁的女教师 |
当然,在一个WHERE子句中,也可以同时使用多个AND运算符连接多个查询条件。这时,只有满足所有查询条件的记录,才被包括在结果表中。
实例2 使用多个AND运算符实现条件查询
从TEACHER表中查询年龄(AGE)大于30,且性别(TSEX)为女的计算机系教师的所有信息。实例代码:
SELECT * FROM TEACHER WHERE AGE >30 AND TSEX='女' AND DNAME=’计算机’ ORDER BY AGE |
运行结果如图6.2所示。
图6.2 计算机系中年龄大于30岁的女教师 |