过滤数据
本章讲授如何使用select语句的where 子句指定的搜索条件。数据库表一般包含
大量的数据,很少需要检索表中所有的行。通常只会根据特定操作或报告的需要
提取数据的子集。只检索所需数据需要的指定搜索条件(search criteria) ,搜索条
件也称为过滤条件(filter condition)。
selecct prod_name ,prod_price from products where prod_price = 2.50;
这条语句从products 表中检索两个列,但不返回所有行,只返回prod_price
值为2.50 的行。
where 子句的位置 在同时使用order by 和where 子句的时侯,应该让order by
位于where 之后,否则将会产生错误。
1 and操作符
为了不止一个列进行过滤,可使用and操作符给where子句附加条件
select prod_id ,prod_price ,prid_name from products
where vend_id = 1003 and prod_price <= 10;
此sql语句检索由供应商1003 制造且价格小于等于 10 美元的所有产品的名称
和价格。
上述例子中使用了只包含一个关键字的and 的语句,把连个过滤条件组合在一
起。还可以添加多个过滤条件,没添加一条就要使用一个and。
2 or操作符
or操作符与and不同,它指示mysql检索匹配任一条件的行。
select prod_name ,prod_price from products where vend_id = 1002 or vend_id
=1003;
此sql语句检索由任一个指定供应商1002 或者1003制造的所有产品的产品名和价
格。
select prod_name,prod_price from products
where vend_id =1002 or vend_id = 1003 and prod_price >=10;
和
select prod_name,prod_price from products
where (vend_id =1002 or vend_id = 1003) and prod_price >=10;
结果可能不一样,因为and的优先级比or高;
3 in操作符
圆括号在where 子句中还有另外一种用法。in操作符用来指定条件范围,范围中
的每个条件都可以进行匹配。in 取合法值的由逗号分隔的清单全部都在圆括号中
。
select prod_name,prod_price from products where vend_id in(1002 ,1003) order
by prod_ name;
in的功能和or一样
4 not操作符
where 子句中的not 操作符有且只有一个功能,那即使否定它之后跟的任何条件。
select prod_name ,prod_price from products where vend_id not in (1002, 1003)
order by prod_name;