SQL基础学习笔记 《SQL必知必会第五版》 第四~六章—— WHERE子句指定过滤条件

在SQL语句中,一般使用WHERE关键字来指定搜索的过滤条件,紧接在FROM关键字之后,ORDER BY和LIMIT之前。WHERE子句中可以使用比较运算符和BETWEEN /IS NULL/AND/OR/IN/NOT/LIKE等操作符来对查询设定条件,下面逐一讲解。

一、比较运算符

屏幕截图_8-6-2026_15133_weread.qq
并否所有DBMS都支持上述操作符,具体支持哪些操作符需参考使用的DBMS文档。

    SELECT vend_id, prod_name
    FROM Products
    WHERE vend_id <> 'DLL01';

如上段代码,在使用!=或<>时,被对比类型为字符串类型时,对比数据需加上单引号''。

  • 使用BETWEEN时必须接上AND,AND前后分别设置开始值和终值
  • WHERE column IS NULL;可以用来检测列内有无NULL值
  • DBMS特有操作符参见其文档

二、组合WHERE子句

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

此例中只有两个过滤条件,还可通过增加AND来增加过滤条件。

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

与AND不同,在执行OR子句时,第一个条件满足该数据就会返回,后续条件不再执行

  • AND和OR注意事项
    在子句中同时出现AND和OR,会默认优先执行AND前后的语句,此时如想提高OR执行优先级可用圆括号()将OR语句包围。支持多AND和OR的复合子句,以此进行复杂过滤。
    SELECT prod_name, prod_price
    FROM Products
    WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
          AND prod_price >= 10;

三、IN操作符
IN主要用('','','')格式来指定一个条件范围集合,其实是一个支持更复杂OR的子句

    SELECT prod_name, prod_price
    FROM Products
    WHERE vend_id  IN ('DLL01','BRS01')
    ORDER BY prod_name;   
  • IN对比OR的优点

四、NOT操作符
NOT唯一作用在于让其后的条件进行非运算,!=和<>也可实现同样功能,但NOT优势在于和IN连用时,可快速过滤掉IN里的行。大部分DBMS支持NOT否定所有条件。


五、LIKE和通配符
通配符可实现文本字段(字符串类型)模糊条件过滤,其它类型字段不能使用通配符。共有% _ [ ]三种通配符,使用时都需跟在LIKE谓词后。

  • 百分比通配符%
    代表匹配任意个数的任意字符,可使用在搜索模式任意位置,如下
    SELECT prod_name
    FROM Products
    WHERE prod_name LIKE '%F%y%';

意思为查找符合条件(忽略F前后任意字符和y之后任意字符)的字符串
注意事项:结尾有NULL值会无法返回正确数据,可在结尾加%

  • 下划线通配符_
    代表匹配单个字符,功能与%一样,DB2不支持_
  • 方括号通配符[ ]
    代表匹配方括号内的指定字符集的任意一个字符,可与% _组合使用,[^ ]在括号内前缀^脱品号来表示否定。
posted @ 2026-06-08 17:35  喝杯咖啡  阅读(0)  评论(0)    收藏  举报