【MySQL比知必会】第七章 数据过滤

1、组合WHERE子句

  操作符(operator):用来联结或改变WHERE子句中的子句的关键字。

2、AND操作符

  输入:SELECT prod_id,prod_price,prod_name

     FROM products

     WHERE vend_id = 1003 AND prod_price <= 10;

  分析:显示三列——prod_id,prod_price,prod_name,过滤条件是,供应商id是1003,价格小于10。AND就是需要同时满足的过滤条件。

3、OR操作符

  输入:SELECT prod_name,prod_price

     FROM products

     WHERE vend_id = 1002 OR vend_id = 1003;

  分析:显示两列——prod_name,prod_price,过滤条件是:供应商id是1002或1003。OR关键字是满足其中一种条件即可。

4、计算次序(结合方向)

  WHERE子句可以包含任意数目的AND、OR操作符,从而实现复杂和高级的过滤,但是结合顺序是个问题。

  为此,SQL语句规定,AND的优先级高于OR,即先进行AND关键字的过滤。

  输入:SELECT prod_name , prod_price

     FROM products

     WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10

  分析:显示两列——prod_name , prod_price,过滤条件是供应商是1003且商品价格大于10或者供应商是1002而商品价格随意。

  显然上一个例子的期望是:供应商是1002或1003,且他们的价格都大于10 。为实现这样的期望,我们必须使用圆括号来强行更改AND和OR的优先级。

  输入:SELECT prod_name , prod_price

     FROM products

     WHERE (vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10

  分析:括号的优先级最高,所以先进行括号内的过滤,即只留下供应商是1002或1003的商品name和price,然后再进行价格大于10的过滤。

  注:建议多使用圆括号以达到消除歧义的作用。

5、IN操作符

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

  输入:SELECT prod_name,prod_price

     FROM products

     WHERE vend_id IN (1002,1003)

     ORDER BY prod_name;

  分析:显示两列——商品name和price,过滤条件是,供应商ID须是1002到1003范围内,排序条件是,以prod_name列为排序依据,字母升序排序(A-Z)。

6、NOT操作符

  否定它之后所跟的任何条件

  输入:SELECT prod_name,prod_price

     FROM products

     WHERE vend_id NOT IN(1002,1003)

     ORDER BY prod_name;

  分析:显示两列——商品name和price,过滤条件,除了供应商id为1002到1003的其他供应商,排序条件,以prod_name列为排序依据,字母升序排序(A-Z)。

 

posted @ 2017-05-06 16:25  名称简单点  阅读(192)  评论(0编辑  收藏  举报