5.3 NOT操作符
WHERE
子句中的NOT
操作符有且只有一个功能,那就是否定其后所跟的任何条件。因为NOT
从不单独使用(它总是与其他操作符一起使用),所以它的语法与其他操作符有所不同。NOT
关键字可以用在要过滤的列前,而不仅是在其后。
NOT
WHERE
子句中用来否定其后条件的关键字。
下面的例子说明NOT
的用法。为了列出除DLL01
之外的所有供应商制造的产品,可编写如下的代码:
输入▼
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01'
ORDER BY prod_name;
输出▼
prod_name
prod_name
12 inch teddy bear
18 inch teddy bear
8 inch teddy bear
King doll
Queen doll
分析▼
这里的NOT
否定跟在其后的条件,因此,DBMS不是匹配vend_id
为DLL01
,而是匹配非DLL01
之外的所有东西。
上面的例子也可以使用<>
操作符来完成,如下所示:
输入▼
SELECT prod_name
FROM Products
WHERE vend_id <> 'DLL01'
ORDER BY prod_name;
输出▼
prod_name
prod_name
12 inch teddy bear
18 inch teddy bear
8 inch teddy bear
King doll
Queen doll
分析▼
为什么使用NOT
?对于这里的这种简单的WHERE
子句,使用NOT
确实没有什么优势。但在更复杂的子句中,NOT
是非常有用的。例如,在与IN
操作符联合使用时,NOT
可以非常简单地找出与条件列表不匹配的行。
说明:MariaDB中的
NOT
MariaDB支持使用NOT
否定IN
、BETWEEN
和EXISTS
子句。大多数DBMS允许使用NOT
否定任何条件。