一、开胃菜
1.在Excel中使用SQL语句实现精确查询
SQL 有用么? 那么看看这个例子,在EXCEL中使用SQL查询数据
二、组合WHERE子句
1. AND 操作符
其实在上一篇文章里,使用BETWEEN时,已经使用了AND来组合的条件。
sqlite> SELECT prod_id,prod_price,prod_name,vend_id ...> FROM Products ...> WHERE vend_id = 'DLL01' AND prod_price <=4; prod_id prod_price prod_name vend_id ---------- ---------- ----------------- ---------- BNBG01 3.49 Fish bean bag toy DLL01 BNBG02 3.49 Bird bean bag toy DLL01 BNBG03 3.49 Rabbit bean bag t DLL01 sqlite>
2. OR操作符
sqlite> SELECT prod_name,prod_price,vend_id ...> FROM Products ...> WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'; prod_name prod_price vend_id ----------------- ---------- ---------- 8 inch teddy bear 5.99 BRS01 12 inch teddy bea 8.99 BRS01 18 inch teddy bea 11.99 BRS01 Fish bean bag toy 3.49 DLL01 Bird bean bag toy 3.49 DLL01 Rabbit bean bag t 3.49 DLL01 Raggedy Ann 4.99 DLL01 sqlite>
3.优先级
SQL在处理OR操作符前,会优先处理AND操作符。为了使逻辑清晰,可以使用() 来确保先后顺序。
三、IN 操作符
IN 操作符用来取一组由逗号分隔、括在圆括号中的合法值,
sqlite> SELECT prod_name,prod_price,vend_id ...> FROM Products ...> WHERE vend_id IN ('DLL01','BRS01') ...> ORDER BY prod_name; prod_name prod_price vend_id ------------------ ---------- ---------- 12 inch teddy bear 8.99 BRS01 18 inch teddy bear 11.99 BRS01 8 inch teddy bear 5.99 BRS01 Bird bean bag toy 3.49 DLL01 Fish bean bag toy 3.49 DLL01 Rabbit bean bag to 3.49 DLL01 Raggedy Ann 4.99 DLL01 sqlite>
IN 操作符完成了与 OR操作符相同的功能。 IN 操作符有以下优点:
- IN 操作符语法清楚直观
- 在于其他AND和OR操作符组合使用IN时,求值顺序更容易管理
- IN操作符执行比OR快
- IN最大的优点是可以包含其他SELECT语句,能够更动态地建立WHERE子句
四、NOT操作符
NOT 用来否定其后所跟的任何条件。
sqlite> SELECT prod_name,vend_id ...> FROM Products ...> WHERE NOT vend_id = 'DLL01' ...> ORDER BY prod_name; prod_name vend_id ------------------ ---------- 12 inch teddy bear BRS01 18 inch teddy bear BRS01 8 inch teddy bear BRS01 King doll FNG01 Queen doll FNG01 sqlite>
简单的子句,使用NOT优势不大。但在复杂的子句中,NOT很有用。 比如,与IN联合使用,NOT可以很非常简单地找出与条件列表不匹配的行。
关键字:AND, OR, IN, NOT