MySQL基础(四):数据过滤
数据过滤
WHERE子句组合NOT和IN操作符以建立功能更强的更高级的搜索条件。
AND操作符
为了通过不止一个列进行过滤,可使用AND操作符给WHERE子句附加条件。下面的代码给出了一个例子:
输入
SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;
输出
分析
此SQL语句检索由供应商1003制造且价格小于等于10美元的所有产品的名称和价格。这条SELECT语句中的WHERE子句包含两个条件,并且用AND关键字联结它们。AND指示DBMS只返回满足所有给定条件的行。如果某个产品由供应商1003制造,但它的价格高于10美元, 则不检索它。类似,如果产品价格小于10美元,但不是由指定供应商制造的也不被检索。
OR操作符
OR操作符与AND操作符不同,它指示MySQL检索匹配任一条件的行。请看如下的SELECT语句:
输入
SELECT prod_name, prod_price FROM products WHERE vend_id = 1003 OR vend_id = 1003;
输出
分析
此SQL语句检索由任一个指定供应商制造的所有产品的产品名和价格。OR操作符告诉DBMS匹配任一条件而不是同时匹配两个条件。如果这里使用的是AND操作符,则没有数据返回(此时创建的WHERE子句不会检索到匹配的产品)。
IN操作符
圆括号在WHERE子句中还有另外一种用法。IN操作符用来指定条件范 围,范围中的每个条件都可以进行匹配。IN取合法值的由逗号分隔的清单,全都括在圆括号中。下面的例子说明了这个操作符:
输入
SELECT prod_name, prod_price FROM products WHERE vend_id IN (1002, 1003) ORDER BY prod_name;
输出
分析
此SELECT语句检索供应商1002和1003制造的所有产品。IN操作符后跟由逗号分隔的合法值清单,整个清单必须括在圆括号中。
NOT操作符
WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。下面的例子说明NOT的使用。为了列出除1002和1003之外的所有供应商制造的产品,可编写如下的代码:
输入
SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN (1002, 1003) ORDER BY prod_name;
输出
分析
这里的NOT否定跟在它之后的条件,因此,MySQL不是匹配1002和1003的vend_id,而是匹配1002和1003之外供应商的 vend_id。