目录
高级数据过滤 ANDOR求值顺序INNOT用通配符进行过滤 LIKE乍一看,似乎没有问题,where prod_price >= 10 and vend_id = 'DLL01' or vend_id = 'BRS01'很符合题目,但是看一下结果: 为什么会出现价格低于10美元的产品??
原因在于求值顺序,也就是AND在求值过程中优先级更高,操作符被错误的组合。
正解: select prod_name,prod_price from Products where prod_price >= 10 and (vend_id = 'DLL01' or vend_id = 'BRS01');提示:任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确的分组操作符。
可以看到IN完成了OR相同的功能,但是:
IN操作符比OR操作符执行的更快IN操作符更加直观IN最大的优点是可以包含其他SELECT语句,后续会介绍WHERE子句中的NOT操作符有且只有一个功能,那就是否定其后所跟的任何条件
问题:列出除DLL01之外的所有供应商制造的产品解: select prod_name, prod_price from Products where not vend_id = 'DLL01';也可以用<>完成
select prod_name,prod_price from Products where vend_id <> 'DLL01';_只匹配单个字符
select prod_id,prod_name,prod_price from Products where prod_name like '__ inch teddy bear';[ ]用来匹配指定位置的一个字符
问题:找出所有名字以J或M起头的联系人解: select cust_contact from Customers where cust_contact like '[JM]%' order by cust_contact;MySQL中不可用
转载于:https://www.cnblogs.com/xLI4n/p/10341136.html