SQLite Where 子句

SQLite的 WHERE 子句用于过滤记录,只获取需要的记录

如果满足给定的条件,即为真(true)时,则从表中返回特定的值,这样就可以使用 WHERE 子句来过滤记录,只获取需要的记录。

WHERE 子句不仅可用在 SELECT 语句中,它也可用在 UPDATE、DELETE 等等语句中

语法

SQLite 的带有 WHERE 子句的 SELECT 语句的基本语法如下:

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition]

可以使用 比较或逻辑运算符 指定条件,比如 >、<、=、LIKE、NOT,等等

范例

假设我们的 company 表有以下记录:

sqlite> SELECT * FROM company;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

1. 列出 age 大于等于 25 工资大于等于 65000.00 的所有记录

sqlite> SELECT * FROM company WHERE age >= 25 AND salary >= 65000;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

2. 列出 age 大于等于 25 工资大于等于 65000.00 的所有记录

sqlite> SELECT * FROM company WHERE age >= 25 OR salary >= 65000;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

3. 列出 age 不为 NULL 的所有记录

结果显示了所有的记录,意味着没有一个记录的 age 等于 NULL

sqlite> SELECT * FROM company WHERE age IS NOT NULL;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          Texas       45000.0
7           James       24          Houston     10000.0

4. 列出 name 以 'Ki' 开始的所有记录,'Ki' 之后的字符不做限制

sqlite> SELECT * FROM company WHERE name LIKE 'Ki%';
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
6           Kim         22          Texas       45000.0

5. 列出 name 以 'Ki' 开始的所有记录,'Ki' 之后的字符不做限制

sqlite> SELECT * FROM company WHERE name GLOB 'Ki*';
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
6           Kim         22          Texas       45000.0

6. 列出 age 的值为 25 或 27 的所有记录

sqlite> SELECT * FROM company WHERE age IN ( 25, 27 );
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

7. 列出 age 的值既不是 25 也不是 27 的所有记录

sqlite> SELECT * FROM company WHERE age NOT IN ( 25, 27 );
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
6           Kim         22          Texas       45000.0
7           James       24          Houston     10000.0

8. 列出 age 的值在 25 与 27 之间的所有记录

sqlite> SELECT * FROM company WHERE age BETWEEN 25 AND 27;
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

9. 列出 外查询中的 age 存在于子查询返回的结果中的所有记录

下面的 SELECT 语句使用 SQL 子查询,子查询查找 salary > 65000 的带有 age 字段的所有记录,后边的 WHERE 子句与 EXISTS 运算符一起使用

sqlite> SELECT age FROM company
        WHERE EXISTS (SELECT age FROM company WHERE salary > 65000);
age
----------
32
25
23
25
27
22
24

10. 列出外查询中的 age 大于子查询返回的结果中的年龄的所有记录

下面的 SELECT 语句使用 SQL 子查询,子查询查找 salary > 65000 的带有 age 字段的所有记录,后边的 WHERE 子句与 > 运算符一起使用

sqlite> SELECT * FROM company
        WHERE age > (SELECT age FROM COMPANY WHERE salary > 65000);
id          name        age         address     salary
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0

SQLite 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.