SQL学习04 过滤数据

SELECT prod_name,prod_price

FROM Products

WHERE prod_price=3.49;

警告:WHERE子句的位置

在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误(关于ORDER BY的使用,请参阅第3课)。

表4-1WHERE子句操作符

SQL学习04 过滤数据_第1张图片

警告: 操作符兼容

表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可以非常简单地找出与条件列表不匹配的行。

你可能感兴趣的:(SQL学习04 过滤数据)