1. 高级数据过滤
概念:操作符(用来联结或者改变WHERE子句中子句的关键字,也成为逻辑操作符)
1)组合WHERE子句
为了满足更强的数据过滤,SQL允许给出多个WHERE子句。这些子句有两种使用方式即以AND子句或者OR子句的方式使用。
AND操作符
select 列名 from 表名 where 列名=值 and 列名=值(order by 列名【desc】));
OR操作符
select 列名 from 表名 where 列名=值 or 列名=值(order by 列名【desc】));
求值顺序
where子句可以包含任意数目的AND和OR操作符。允许两者结合以进行复杂、高级的过滤。
分析:
需要列出价格为10美元及以上,且由1001或者1003制造的所有产品:
select from products where vend_id = ‘1001’ or vend_id = ‘1003’ and prod_price >10;*
结果为:
可以看到结果中包含prod_price<10的子句。由与SQL在处理OR操作符前优先处理AND操作符。因此它理解为:由供应商1003制造的价格为10美元以上的所有产品,以及由供应商1001制造的所有产品,而不管其价格如何。
解决方法:可以使用()来对操作符进行明确分组。
select * from products where (vend_id = ‘1001’ or vend_id = ‘1003’) and prod_price >10;
IN操作符
select 列名 from 表名 where 列名 in (值1,值2)【order by 列名 【desc】】
IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配,IN取一组由逗号、在括号中的合法值。与OR可以完成相同的工作。
NOT操作符
select 列名 from 表名 where not 条件;
not从来不能单独使用,where子句中用来否定其后条件的关键字。
2. 用通配符进行过滤
通配符:用来匹配值的一部分特殊字符。
搜索模式:由字面值,通配符,或者两组合构成的搜索条件。
为了在搜索子句中使用通配符,必须使用LIKE操作符。LIKE高度DBMS,后跟的搜索模式是利用通配符匹配而不是简单的相等匹配进行比较。
%通配符(表示任何字符出现任意次数)
select 列名 from 表名 where 列名 like ‘开头字符%’;
注意:通配符看起来像是可以匹配任何东西,但有个例外,这就是NULL。子句WHERE prod_name like ‘%’ ,不会匹配产品名称为NULL的行。