SELECT prod_name,prod_price
FROM Products
WHERE prod_price=3.49;
警告:WHERE子句的位置
在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误(关于ORDER BY的使用,请参阅第3课)。
表4-1WHERE子句操作符
警告: 操作符兼容
表4-1中列出的某些操作符是冗余的(如< >与!=相同,!<相当于>=)。并非所有DBMS都支持这些操作符。想确定你的DBMS支持哪些操作符,请参阅相应的文档。
1 检查单个值
SELECT prod_name,prod_price
FROM Products
WHERE prod_price<10;
2 不匹配检查
SELECT vend_id,prod_name
FROM Products
WHERE vend_id<>'DLL01';
3 范围值检查
SELECT prod_name,prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
4 空值检查
NULL
无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
AND操作符(OR同用法)
SELECT prod_id,prod_price,prod_name
FROM Products
WHERE vend_id='DLL01' AND prod_price<=4;
求值顺序
SELECT prod_name,prod_price
FROM Products
WHERE(vend_id='DLL01'OR vend_id=‘BRS01’)
AND prod_price>=10;
提示:在WHERE子句中使用圆括号
任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认求值顺序,即使它确实如你希望的那样。使用圆括号没有什么坏处,它能消除歧义。
IN
WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。
SELECT prod_name,prod_price
FROMProducts
WHERE vend_id IN('DLL01','BRS01')
ORDER BY prod_name;
NOT操作符
SELECT prod_name
FROMProducts
WHERE NOT vend_id='DLL01'ORDER BY prod_name;
等同于
SELECT prod_name
FROMProducts
WHERE vend_id<>'DLL01'
ORDER BY prod_name;
分析▼
为什么使用NOT?对于这里的这种简单的WHERE子句,使用NOT确实没有什么优势。但在更复杂的子句中,NOT是非常有用的。例如,在与IN操作符联合使用时,NOT可以非常简单地找出与条件列表不匹配的行。