高级数据过滤 – SQLite 学习之路 (5)

一、开胃菜

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

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.