5.1 组合WHERE 子句
#5.1.1 AND操作符
1 SELECT prod_id, prod_price, prod_name
2 FROM Products
3 WHERE vend_id = 'DLL01' AND prod_price <= 4;
结果
#5.1.2 OR操作符
1 SELECT prod_name, prod_price
2 FROM Products
3 WHERE vend_id = 'DLL01' OR vend_id = 'BRS01';
结果
#5.1.3 求值顺序
需要列出“价格为10美元及以上”?且由 “DLL01” 或 “BRS01” 制造的所有产品。
1 SELECT prod_name, prod_price
2 FROM Products
3 WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
4 AND prod_price >= 10;
结果:
观察到出现的,不符合10美元以下的!!!原因是 逻辑运算符的运算顺序。
#使用圆括号来消除歧义
1 SELECT prod_name, prod_price
2 FROM Products
3 WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01')
4 AND prod_price >= 10;
5
6 /* 使用圆括号来消除歧义 */
结果
5.2 IN 操作符
1 SELECT prod_name, prod_price
2 FROM Products
3 WHERE vend_id IN ( 'DLL01', 'BRS01' )
4 ORDER BY prod_name;
5
6 /*
7 效果等价以下的语句:
8 SELECT prod_name, prod_price
9 FROM Products
10 WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
11 ORDER BY prod_name;
12
13 很明显利用IN能更简洁,清晰
14 */
结果
5.3 NOT 操作符
1 SELECT prod_name
2 FROM Products
3 WHERE NOT vend_id = 'DLL01'
4 ORDER BY prod_name;
5
6 /*
7 等价于下面的语句:
8
9 SELECT prod_name
10 FROM Products
11 WHERE vend_id <> 'DLL01'
12 ORDER BY prod_name;
13 */
结果