操作符 operator

用来连结或改变 WHERE 子句中的子句的关键字,也称逻辑操作符 logical operator

WHERE 子句

写在 FROM 子句之后

SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49

SQL 支持的条件操作符

除了=, !=, <, <=, >, >=还有: | 操作符 | 说明 | | ——- | —————— | | <> | 不等于 | | !< | 不小于 | | !> | 不大于 | | BETWEEN | 在指定的两个值之间 | | IS NULL | 为 NULL 值 |

注意:

  • 有些操作符是冗余的,并不是所有 DBMS 都支持这些操作符
  • 对于字符串的比较,需要用单引号括起来

范围值检查 BETWEEN-AND

包括边界值

SELECT prod_name, prod_price
FROM Products
WHERE prod_price BETWEEN 5 AND 10;

空值检查 IS NULL

SELECT prod_name
FROM Products
WHERE prod_price IS NULL;

空值与 0 或空格字符串、空格不同,无法被返回

组合 WHERE 子句

AND 操作符

用在 WHERE 子句中,增加过滤条件

SELECT prod_id, prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' AND prod_price <= 4;

OR 操作符

SELECT prod_id, prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';

求值顺序

SQL 默认优先处理 AND 操作符,使用圆括号可以改变求值顺序

SELECT prod_name, prod_price
FROM Products
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
        AND prod_price >= 10;

IN 操作符

指定条件范围,取一组括号中的值

SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
  • IN 与 OR 功能相当,但更直观,速度更快
  • IN 可以包含其他 SELECT 语句,第 11 课会介绍

NOT 操作符

否定其后所跟的任何条件

SELECT prod_name, prod_price
FROM Products
WHERE vend_id NOT IN ('DLL01', 'BRS01')