SQLite WHERE 子句实战指南(四)
- 数据库
- 7天前
- 6热度
- 0评论
在数据库操作中,精确地筛选出所需的数据是一项基本而重要的技能。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 子句,提高数据处理的效率和准确性。