过滤数据 – SQLite 学习之路 (4)

目录 Content
[hide]

一、开胃菜

1.对SQLITE数据库文件瘦身

在使用SQLITE的过程中,数据库文件在经历了delete数据后,体积并没有缩小,这时可使用 VACUUM 指令来对数据库瘦身。

sqlite> VACUUM;
sqlite>

关于 VACUUM 功能,请移步 http://sqlite.org/lang_vacuum.html

二、使用 WHERE 过滤数据

前面的语句所筛选的都是没有经过过滤的数据,使用 WHERE 子句可以指定搜索条件。

1.使用WHERE子句筛选

C:\Users\liangtao>sqlite3 tysql.sqlite
-- Loading resources from C:\Users\liangtao/.sqliterc

SQLite version 3.8.10.2 2015-05-20 18:17:19
Enter ".help" for usage hints.
sqlite> SELECT prod_name,prod_price
   ...> FROM Products
   ...> WHERE prod_price = 3.39
   ...> ;
sqlite> SELECT prod_name,prod_price
   ...> FROM Products
   ...> WHERE prod_price = 3.49
   ...> ;
prod_name          prod_price
-----------------  ----------
Fish bean bag toy  3.49
Bird bean bag toy  3.49
Rabbit bean bag t  3.49
sqlite>

如果客户端要提取某种条件数据,应该直接让数据库来操作。数据库本身就是擅长做数据处理的。

2. 字符串使用单引号 ”

sqlite> SELECT vend_id,prod_name
   ...> FROM Products
   ...> WHERE vend_id <> 'DLL01';
vend_id     prod_name
----------  -----------------
BRS01       8 inch teddy bear
BRS01       12 inch teddy bea
BRS01       18 inch teddy bea
FNG01       King doll
FNG01       Queen doll
sqlite>

3. 搜索某个范围 BETWEEN

使用 BETWEEN 操作符,可以过滤出某个范围的值

sqlite> SELECT prod_name,prod_price
   ...> FROM Products
   ...> WHERE prod_price BETWEEN 5 AND 10;
prod_name          prod_price
-----------------  ----------
8 inch teddy bear  5.99
12 inch teddy bea  8.99
King doll          9.49
Queen doll         9.49
sqlite>

当然也可以用 < 和 > 以及 AND 来限定

sqlite> SELECT prod_name,prod_price
   ...> FROM Products
   ...> WHERE prod_price > 5 AND prod_price < 10;
prod_name          prod_price
-----------------  ----------
8 inch teddy bear  5.99
12 inch teddy bea  8.99
King doll          9.49
Queen doll         9.49
sqlite>

4. 空值 NULL 检查

某些情况,某列的值存入的是空值,称其为 NULL,使用 WHERE … IS NULL 来判断。

sqlite> SELECT cust_name
   ...> FROM CUSTOMERS
   ...> WHERE cust_email IS NULL;
cust_name
----------
Kids Place
The Toy St
sqlite>


注意,不包含某个值并不一定包含 IS NULL 的值,所以要特别验证含NULL的行是否出现在过滤的数据中。

关键字: WHERE, NULL, BETWEEN

Leave a Reply

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