SQLite WHERE 子句实战指南(四)

在数据库操作中,精确地筛选出所需的数据是一项基本而重要的技能。SQLite 提供了强大的 WHERE 子句,帮助开发者根据特定条件从表中提取数据。本文将详细介绍 WHERE 子句的语法、用法,并通过多个实战案例展示其强大功能。

什么是 WHERE 子句?

WHERE 子句用于指定从表中获取数据的条件。当满足给定的条件时,SQL 语句会返回相应的记录。WHERE 子句不仅可以用在 SELECT 语句中,还可以用在 UPDATE 和 DELETE 语句中,以便更精确地控制数据的修改和删除。

基本语法

WHERE 子句的基本语法如下:

SELECT column1, column2, columnN 
FROM table_name
WHERE condition;

其中,condition 是一个布尔表达式,用于指定筛选条件。可以使用各种比较运算符(如 =, >, <, !=)和逻辑运算符(如 AND, OR, NOT)来构建复杂的条件。

实战案例

为了更好地理解 WHERE 子句的用法,我们假设有一个名为 COMPANY 的表,其结构和数据如下:

CREATE TABLE COMPANY (
    ID INTEGER PRIMARY KEY,
    NAME TEXT NOT NULL,
    AGE INT NOT NULL,
    ADDRESS CHAR(50),
    SALARY REAL
);

INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (1, 'Paul', 32, 'California', 20000.0);
INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.0);
INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.0);
INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond', 65000.0);
INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (5, 'David', 27, 'Texas', 85000.0);
INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (6, 'Kim', 22, 'South-Hall', 45000.0);
INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) VALUES (7, 'James', 24, 'Houston', 10000.0);

使用 AND 运算符

AND 运算符用于组合多个条件,只有当所有条件都为真时,整个条件才为真。例如,我们可以列出年龄大于等于 25 且工资大于等于 65000 的员工:

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

使用 OR 运算符

OR 运算符用于组合多个条件,只要其中一个条件为真,整个条件就为真。例如,我们可以列出年龄大于等于 25 或工资大于等于 65000 的员工:

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

使用 NOT 运算符

NOT 运算符用于否定一个条件。例如,我们可以列出年龄不为空的员工:

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          South-Hall  45000.0
7           James       24          Houston     10000.0

使用 LIKE 运算符

LIKE 运算符用于模式匹配。例如,我们可以列出名字以 "Ki" 开头的员工:

SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';

执行上述查询后,结果如下:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

使用 IN 运算符

IN 运算符用于指定多个可能的值。例如,我们可以列出年龄为 25 或 27 的员工:

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

使用 BETWEEN 运算符

BETWEEN 运算符用于指定一个范围。例如,我们可以列出年龄在 25 到 27 之间的员工:

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

使用子查询

子查询可以在 WHERE 子句中嵌套另一个查询。例如,我们可以列出年龄大于工资超过 65000 的员工的年龄:

SELECT AGE FROM COMPANY 
WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

执行上述查询后,结果如下:

AGE
32
25
23
25
27
22
24

使用条件更新

UPDATE 语句也可以使用 WHERE 子句来更新符合条件的记录。例如,我们可以将年龄大于 25 的员工的工资增加 1000:

UPDATE COMPANY
SET SALARY = SALARY + 1000
WHERE AGE > 25;

执行上述更新后,COMPANY 表的数据将发生变化。

总结

通过本文的介绍,我们详细了解了 SQLite 中 WHERE 子句的用法及其在不同场景下的应用。WHERE 子句是 SQL 语句中不可或缺的一部分,能够帮助我们更精确地筛选和操作数据。希望本文能帮助你在实际开发中更加熟练地使用 WHERE 子句,提高数据处理的效率和准确性。