首页 > 代码库 > 【MySQL比知必会】第七章 数据过滤
【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)。
【MySQL比知必会】第七章 数据过滤