• 【数据库】SQL 过滤数据


    s q l sql sql 语句中,通过 WHERE 子句指定搜索条件进行过滤。

    简单过滤

    • 包含:WHEREBETWEENIS NULL

    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;
    
    • 1
    • 2
    • 3

    e . g . e.g. e.g. 列出所有不是供应商 DLL01 制造的产品;

    SELECT vend_id, prod_name
    FROM Products
    WHERE vend_id <> 'DLL01'
    
    • 1
    • 2
    • 3

    范围值检擦

    范围值的检查使用 BETWEEN 操作符,示例如下;

    e . g . e.g. e.g. 检索价格在 5 美元到 10 美元之间的所有产品;

    SELECT prod_name, prod_price
    FROM Products
    WHERE prod_price BETWEEN 5 AND 10;
    
    • 1
    • 2
    • 3
    • BETWEEN 匹配范围中所有的值,包括开始值与结束值。

    空值检查

    空值 NULL,是无值,与字段为0、空字符串和仅仅空格不同。当一个列不包含值时,称为包含空值。

    e . g . e.g. e.g. 检索有没有价格为空值;

    SELECT prod_name
    FROM Products
    WHERE prod_price IS NULL;
    
    • 1
    • 2
    • 3

    高级过滤

    • 包含:NOTINANDOR

    多个过滤条件

    AND

    • 多个过滤条件中间都需要添加 AND 关键字;
    • AND 操作符指示 DBMS 检索匹配同时满足前后条件的行。

    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;
    
    • 1
    • 2
    • 3

    OR

    • OR 操作符指示 DBMS 检索匹配满足前后任一条件的行;

    e . g . e.g. e.g. 检索商品由供应商 DDL01 制造或者 BRS01 制造的名称和价格;

    SELECT prod_name, prod_price
    FROM Products
    WHERE vend_id = 'DDL01' or vend_id = 'BRS01';
    
    • 1
    • 2
    • 3

    求值顺序

    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    读者理解上述三个语句的逻辑,即明白求值顺序。总而言之,由于 AND 优先级高于 OR 优先级,过滤语句会优先执行 AND 语句的前后的组合,即 A OR (B AND C) ;


    IN 操作符

    • IN 操作符后跟随一个范围值,范围内每个条件都可以进行匹配。

    e . g . e.g. e.g. 检索由供应商 DLL01 和 BRS01 制造的所有产品。

    SELECT prod_name, prod_price
    FROM Products
    WHERE vend_id IN ('DLL01', 'BRS01')
    
    • 1
    • 2
    • 3
    • 效果同本文上述部分通过 OR 语句连接的过滤语句;但是对比来看,IN 操作符的语法更加直观且清晰;
    • IN 操作符也可以包含其他 SELECT 语句,动态地建立 WHERE 子句;
    • IN 操作符理论上比一组 OR 操作符执行得更快。

    NOT 操作符

    • NOT 操作符否定其后所跟得条件,结果剔除满足其后所跟条件的行;

    e . g . e.g. e.g. 检索不是由供应商 DDL01 制造的其他所有商品名称;

    SELECT prod_name
    FROM Products
    WHERE NOT vend_id = 'DLL01';
    
    • 1
    • 2
    • 3


    以上

  • 相关阅读:
    【算法】【递归与动态规划模块】字符串之间转换的最小代价
    电力通信网与运营商5G网络融合方案
    mysql 间隙锁原理深度详解
    VUE----通过nvm管理node版本
    TDengine 3.1.1.0 来啦!更新如下
    Searching for MobileNetV3翻译
    计数排序法
    Vue的SetUp函数
    gma 2 成书计划
    Winform窗体开发:限制只能启动一个exe程序,禁止多开客户端。
  • 原文地址:https://blog.csdn.net/weixin_43098506/article/details/133924813