zoukankan      html  css  js  c++  java
  • 第5课 高级数据过滤

    第5课 高级数据过滤

    5.1 组合WHERE子句

    5.1.1 AND操作符

    要通过不止一个列进行过滤,可以使用AND操作符给WHERE子句附加条件。

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

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

    AND
    用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。

    这个例子只包含一个AND子句,因此最多有两个过滤条件。可以增加多个过滤条件,每个条件间都要使用AND关键字。

    5.1.2 OR操作符

    OR操作符与AND操作符正好相反,它指示DBMS检索匹配任一条件的行。事实上,许多DBMS在OR WHERE子句的第一个条件得到满足的情况下,就不再计算第二个条件了(在第一个条件满足时,不管第二个条件是否满足,相应的行都将被检索出来)。

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

    OR
    WHERE子句中使用的关键字,用来表示检索匹配任一给定条件的行。

    5.1.3 求值顺序

    WHERE子句可以包含任意数目的AND和OR操作符。允许两者结合以进行复杂、高级的过滤。

    SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。

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

    提示:在WHERE子句中使用圆括号
    任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认求值顺序,即使它确实如你希望的那样。使用圆括号没有什么坏处,它能消除歧义。

    5.2 IN操作符

    IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取一组由逗号分隔、括在圆括号中的合法值。

    SELECT prod_name, prod_price
    FROM Products
    WHERE vend_id IN ( 'DLL01', 'BRS01' )
    ORDER BY prod_name;
    

    你可能会猜测IN操作符完成了与OR相同的功能,恭喜你猜对了!下面的SQL语句完成与上面的例子相同的工作:

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

    IN
    WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。

    5.3 NOT操作符

    NOT
    WHERE子句中用来否定其后条件的关键字。

    为了列出除DLL01之外的所有供应商制造的产品,可编写如下的代码:

    SELECT prod_name
    FROM Products
    WHERE NOT vend_id = 'DLL01'
    ORDER BY prod_name;
    

    5.4 小结

    这一课讲授如何用AND和OR操作符组合成WHERE子句,还讲授了如何明确地管理求值顺序,如何使用IN和NOT操作符。

  • 相关阅读:
    CSS中position小解
    position
    mac默认安装postgresql, 如何让postgresql可以远程访问
    The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.0.
    active admin gem error
    psql 无法添加超级用户
    ubuntu 15.04 安装Balsamiq Mockups 3
    Rails html 写public里图片的路径
    rails c 历史命令
    undefined local variable or method `per' for []:ActiveRecord::Relation
  • 原文地址:https://www.cnblogs.com/zhangsonghui/p/12943683.html
Copyright © 2011-2022 走看看