zoukankan      html  css  js  c++  java
  • T-SQL:毕业生出门需知系列(五)

    第5课 高级数据过滤

    5.1 组合 WHERE 子句

      第4课介绍的 WHERE 子句在过滤数据时都是用单一的条件。

    5.1.1 AND 操作符

      检索由供应商 DLL01 制造且价格小于等于 4 美元的所有产品的名称和价格:

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

    5.1.2 OR 操作符

      检索任一个指定供应商制造的所有产品的名称和价格:

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

    5.1.3 求值顺序(( ))

      需要列出价格为 10 美元以上,且由 DLL01 或 BRS01 制造的所有产品:

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

      

      观察结果,发现有 4 行价格小于 10 美元的。

      【原因】SQL 在处理 OR 操作符前,优先处理 AND 操作符

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

      【提示】在 WHERE 子句中使用圆括号:

        改变优先级;

        明确操作顺序,增强可读性。

    5.2 IN 操作符

      IN 操作符:用来指定条件范围,范围中的每个条件都可以进行匹配。

      检索由供应商 DLL01 和 BRS01 制造的所有产品:

    SELECT prod_name, prod_price
    FROM Products
    WHERE vend_id IN ('DLL01', 'BRS01')
    ORDER BY prod_name;
    -- 用 IN 完成和 OR 同样的操作
    SELECT prod_name, prod_price
    FROM Products
    WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
    ORDER BY prod_name

      使用 IN 操作符的原因
        --在有很多合法选项时,IN 的语法更直观;
        --在与其它 AND 和 OR 组合使用 IN 时,求值顺序容易管理;
        --IN 一般比一组 OR 执行得快;
        --最大优点--可以包含其它 SELECT 语句,能动态地建立 WHERE 子句。

    5.3 NOT 操作符

      用来否定其后所跟的任何条件

      NOT 从不单独使用

      NOT 可以用在要过滤的列前或后

      列出除 DLL01 之外的所有供应商制造的产品:

    SELECT prod_name
    FROM Products
    WHERE NOT vend_id = 'DLL01'
    ORDER BY prod_name;
    --也可以使用<>,结果一样
    SELECT prod_name
    FROM Products
    WHERE vend_id <> 'DLL01'
    ORDER BY prod_name;

    5.4 小结

    • AND 和 OR 组合的 WHERE 子句
    • 求值顺序
    • IN 和 NOT

    续集:

      SQLServer:《SQL必知必会》一书的读书笔记(六)

      SQLServer:《SQL必知必会》一书的读书笔记(四)

  • 相关阅读:
    light_oj 1197 区间素数筛
    light_oj 1213
    light_oj 1220 素数分解
    bestcoder#43 1002 在数组中找两个数的和取模的最大值 二分
    6月7日 bc总结
    省赛总结
    二分图最大点权独立集 二分图最大点权覆盖
    终于能理解kmp算法了
    hduoj2087 统计串t在串s中出现的次数,重叠不算 KMP
    带权二分图的最大权匹配 KM算法模版
  • 原文地址:https://www.cnblogs.com/liqingwen/p/4657512.html
Copyright © 2011-2022 走看看