第7章 数据高级过滤

    组合WHERE子句
        AND操作符
        OR操作符
        计算次序
        IN操作符
        NOT操作符

  

一、组合WHERE子句

  为了进行更强的过滤控制,MySQL允许给出多个where子句。这些子句可以两种方式使用:以and子句的方式或or子句的方式使用。

1、AND操作符

  为了通过不止一个列进行过滤,可使用and操作符给where子句附加条件。

    select prod_id, prod_price, prod_name
    from products
    where vend_id = 1003 and prod_price <= 10;

  and用在where子句中的关键字,用来指示检索满足所有给定条件的行。还可以添加多个过滤条件,每添加一条就要使用一个and

2、OR操作符

  or操作符与and操作符不同,它指示MySQL检索匹配任一条件的行。

    select prod_name, prod_price
    from products
    where vend_id = 1002 or vend_id = 1003;

  用来检索匹配任一给定条件的行。

3、计算次序

  where可包含任意数据的andor操作符。允许两者结合以进行复杂和高级过滤。

例如,要列出价格为10美元(含)以上且由1002或1003制造的所有产品。

    select prod_name, prod_price
    from products
    where (vend_id = 1002 or vend_id = 1003) and prod_price >= 10;

注意:and操作符的优先级要高于or,所有这里需要使用小括号。

4、IN操作符

  圆括号在where子句中还有另外一种用法。in操作符用来指定条件范围,范围中的每个条件都可以进行匹配。in取合法值由逗号分隔的清单,全都括在圆括号中。

    select prod_name, prod_price
    from products
    where vend_id in (1002, 1003)
    order by prod_name;

  in操作符完成与or相同的功能。

in操作符优点:

    更清楚直观
    计算的次序更容易管理
    比or执行更快
    可以包含其它select语句

5、NOT操作符

  where子句中的not操作符有且只有一个功能,那就是否定之后所跟的任何条件。

例如,列出除了1002和1003之外的所有供应商制造的产品。

    select prod_name, prod_price
    from products
    where vend_id not in (1002, 1003)
    order by prod_name;

🔚