在 s q l sql sql 语句中,通过 WHERE 子句指定搜索条件进行过滤。
操作符 | Value | 操作符 | value |
---|---|---|---|
= | 等于 | > | 大于 |
<> | 不等于 | >= | 大于等于 |
!= | 不等于 | !> | 不大于 |
< | 小于 | BETWEEN | 在指定的两个值之间 |
<= | 小于等于 | IS NULL | 为 NULL 值 |
!< | 不小于 |
!=
与 <>
通常可以互换,但是并非所有的 DBMS 都支持两种不等于操作符,但是都至少支持其中一种操作符。读者选择不同的 DBMS 时需注意。
e . g . e.g. e.g. 列出所有价格小于10美元的产品;
SELECT prod_name, prod_price
FROM Products
WHERE prod_price < 10;
e . g . e.g. e.g. 列出所有不是供应商 DLL01 制造的产品;
SELECT vend_id, prod_name
FROM Products
WHERE vend_id <> 'DLL01'
范围值的检查使用 BETWEEN
操作符,示例如下;
e . g . e.g. e.g. 检索价格在 5 美元到 10 美元之间的所有产品;
SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
BETWEEN
匹配范围中所有的值,包括开始值与结束值。空值 NULL
,是无值,与字段为0、空字符串和仅仅空格不同。当一个列不包含值时,称为包含空值。
e . g . e.g. e.g. 检索有没有价格为空值;
SELECT prod_name
FROM Products
WHERE prod_price IS NULL;
AND
e . g . e.g. e.g. 检索商品由供应商 DDL01 制造且价格小于等于 4 美元的所有商品代码、名称和价格;
SELECT prod_id, prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;
OR
e . g . e.g. e.g. 检索商品由供应商 DDL01 制造或者 BRS01 制造的名称和价格;
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DDL01' or vend_id = 'BRS01';
AND + OR 在多个过滤条件组合时,AND 的优先级高于 OR 优先级。
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01' AND prod_price >= 10;
-- 上述过滤逻辑等同于:
WHERE vend_id = 'DLL01' OR (vend_id = 'BRS01' AND prod_price >= 10);
-- 而不等同于:
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >= 10;
读者理解上述三个语句的逻辑,即明白求值顺序。总而言之,由于 AND 优先级高于 OR 优先级,过滤语句会优先执行 AND 语句的前后的组合,即 A OR (B AND C) ;
e . g . e.g. e.g. 检索由供应商 DLL01 和 BRS01 制造的所有产品。
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
e . g . e.g. e.g. 检索不是由供应商 DDL01 制造的其他所有商品名称;
SELECT prod_name
FROM Products
WHERE NOT vend_id = 'DLL01';
–
以上