• 第7章 数据高级过滤
    • 一、组合WHERE子句
      • 1、AND操作符
      • 2、OR操作符
      • 3、计算次序
      • 4、IN操作符
      • 5、NOT操作符

    第7章 数据高级过滤

    1. 组合WHERE子句
    2. AND操作符
    3. OR操作符
    4. 计算次序
    5. IN操作符
    6. NOT操作符

      

    一、组合WHERE子句

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

    1、AND操作符

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

    1. select prod_id, prod_price, prod_name
    2. from products
    3. where vend_id = 1003 and prod_price <= 10;

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

    2、OR操作符

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

    1. select prod_name, prod_price
    2. from products
    3. where vend_id = 1002 or vend_id = 1003;

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

    3、计算次序

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

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

    1. select prod_name, prod_price
    2. from products
    3. where (vend_id = 1002 or vend_id = 1003) and prod_price >= 10;
    注意:and操作符的优先级要高于or,所有这里需要使用小括号。

    4、IN操作符

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

    1. select prod_name, prod_price
    2. from products
    3. where vend_id in (1002, 1003)
    4. order by prod_name;

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

    1. in操作符优点:
    2. 更清楚直观
    3. 计算的次序更容易管理
    4. or执行更快
    5. 可以包含其它select语句

    5、NOT操作符

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

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

    1. select prod_name, prod_price
    2. from products
    3. where vend_id not in (1002, 1003)
    4. order by prod_name;

    ?