• 05 高级数据过滤


    组合WHERE子句以建立功能更强、更高级的搜素条件。

    1.组合WHERE子句

    为了实现更强的过滤控制,SQL允许给出多个WHERE子句。这些子句有两种使用方式,即以操作符ANDOR进行联结或改变。

    (1)AND操作符

    用来指示检索满足所有给定条件的行。

    输入:

    SELECT prod_id, prod_price, prod_name

    FROM Products

    WHERE vend_id = 'DLL01' AND prod_price <= 4;

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

    输出:

    可以增加多个过滤条件,每个条件间都要使用AND关键字。

    (2)OR操作符

    用来只是DBMS检索匹配任一条件的行。第一个条件满足时,不管第二个条i安是否满足,相应的行都将被检索出来。

    输入:

    SELECT prod_name, prod_price

    FROM Products

    WHERE vend_id = 'DLL01' OR vend_id ='BRS01';

    SQL语句检索由任一指定供应商制造的所有产品的产品名和价格。

    输出:

    (3)求值顺序

    AND在求值过程中优先级更高,在使用具有ANDOR操作符的WHERE子句时,都应该使用圆括号对操作符进行明确分组。

    当需要列出价格为10美元及以上,且由DLL01BRS01制造的所有产品时,若未使用圆括号进行分组,输入:

    SELECT prod_name, prod_price

    FROM Products

    WHERE vend_id = 'DLL01' OR vend_id ='BRS01'

    AND prod_price >= 10;

    输出:

    可看到有4行价格小于10美元。这是因为执行上述WHERE子句时,先执行AND,后执行OR,这样只要vend_id满足为DLL01,不管vend_id是否为BRS01AND prod_price是否为10

    应该使用圆括号进行分组,正确输入:

    SELECT prod_name, prod_price

    FROM Products

    WHERE (vend_id = 'DLL01' OR vend_id ='BRS01')

    AND prod_price >= 10;

    输出:

    圆括号具有比ANDOR操作符更高的求值顺序,所以DBMS首先过滤括号中的OR条件。这样SQL筛选出价格为由DLL01BRS01制造且10美元及以上的所有产品。

    2.IN操作符

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

    输入:

    SELECT prod_name, prod_price

    FROM Products

    WHERE vend_id IN ('DLL01','BRS01')

    ORDER BY prod_name;

    输出:

    在此SQL语句中,IN操作符完成了与OR相同的功能,即输入:

    SELECT prod_name, prod_price

    FROM Products

    WHERE vend_id = 'DLL01' or vend_id = 'BRS01'

    ORDER BY prod_name;

    同样输出:

    IN操作符的优点:

    1)在有很多合法选项时,IN操作符的语法更清楚,更直观。

    2)在与其他ANDOR操作符组合使用IN时,求值顺序更容易管理。

    3)IN操作符一般比一组OR操作符执行得更快。

    4)IN的最大优点是可以包含其他SELECT语句,能更动态地建立WHERE子句。

    3.NOT操作符

    有且只有一个功能:否定其后所跟的任何条件。

    输入:

    SELECT prod_name

    FROM Products

    WHERE NOT vend_id = 'DLL01'

    ORDER BY prod_name;

    输出:

    DBMS匹配非DLL01之外的所有东西。

    也可以使用<>操作符来完成,输入:

    SELECT prod_name

    FROM Products

    WHERE vend_id <> 'DLL01'

    ORDER BY prod_name;

    输出:

    在更复杂的子句中,与IN操作符联合使用时,NOT可以非常简单地找出与条件列表不匹配的行。

  • 相关阅读:
    升级或安装 GNOME Shell
    安装eclipse for c/c++环境
    BT3入门之中文语言支持
    开始接触BT5-自动登录X界面
    标准流与序列化
    IO流
    Collection与Map容器
    常用类
    枚举与常用类
    异常处理机制
  • 原文地址:https://www.cnblogs.com/Sumomo0516/p/6131517.html
Copyright © 2020-2023  润新知