SQLite 运算符(手把手讲解)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

在数据库开发中,运算符(Operator)是构建查询逻辑的核心工具。无论是筛选数据、计算字段值,还是组合条件表达式,SQLite 运算符都扮演着不可或缺的角色。对于编程初学者而言,掌握这些运算符不仅能提升 SQL 编写效率,还能帮助理解数据库底层逻辑。本文将系统性地介绍 SQLite 中常见的运算符类型,通过实例代码和类比解释,帮助读者快速上手并灵活应用。


一、算术运算符:数据库中的“计算助手”

SQLite 的算术运算符(Arithmetic Operators)用于执行基本的数学运算,例如加减乘除和取模。它们常用于动态计算字段值或筛选满足特定数值条件的记录。

基础用法与示例

以下是 SQLite 支持的算术运算符及其功能:

运算符描述示例表达式结果
+加法5 + 38
-减法10 - 46
*乘法2 * 714
/除法20 / 54
%取模(求余数)15 % 43

实际案例:计算商品总价

假设有一个 products 表,包含 price(单价)和 quantity(数量)字段,我们可以用算术运算符计算每个商品的总价:

SELECT product_name, price * quantity AS total_price  
FROM products;  

类比解释:像计算器一样工作

算术运算符就像一个计算器,直接对字段或数值进行数学运算。例如,price * quantity 就像将单价和数量输入计算器,按下“×”键后得到的结果。


二、比较运算符:数据筛选的“过滤器”

比较运算符(Comparison Operators)用于比较两个值的大小或相等性,是 WHERE 子句中条件表达式的核心组成部分。通过这些运算符,可以精准筛选符合条件的数据。

常用比较运算符及其用法

运算符描述示例表达式结果(布尔值)
=等于age = 25true
<>不等于status <> 'A'true
!=不等于(与 <> 等价)score != 90true
>大于salary > 5000true
<小于stock < 10true
>=大于等于score >= 60true
<=小于等于age <= 18true

实际案例:筛选高收入用户

假设有一个 users 表,包含 income(收入)字段,筛选收入超过 10000 的用户:

SELECT user_id, income  
FROM users  
WHERE income > 10000;  

类比解释:筛选数据就像过安检

比较运算符如同机场安检的“门槛”:只有满足条件(如行李重量 < 20kg)的旅客才能通过。


三、逻辑运算符:构建复杂条件的“逻辑门”

逻辑运算符(Logical Operators)允许开发者将多个条件组合成复杂的布尔表达式,常用于 WHEREHAVING 子句中。

常用逻辑运算符与组合规则

运算符描述示例表达式结果(布尔值)
AND逻辑与(两个条件都为真)age > 18 AND salary >= 5000true
OR逻辑或(至少一个条件为真)status = 'active' OR is_vip = 1true
NOT逻辑非(反转条件结果)NOT is_deletedtrue

实际案例:筛选特定用户群体

假设需查找年龄在 25~35 岁且收入超过 8000 的用户:

SELECT *  
FROM users  
WHERE age BETWEEN 25 AND 35  
AND income > 8000;  

类比解释:逻辑运算符如同电路门

  • AND 相当于串联电路:所有条件必须满足才能通过。
  • OR 相当于并联电路:只要有一个条件满足即可通过。
  • NOT 相当于开关:反转当前条件状态。

四、位运算符:二进制世界的“魔法”

位运算符(Bitwise Operators)直接操作数据的二进制位,常用于需要高效处理二进制数据或位掩码的场景,例如权限管理或状态压缩。

常用位运算符及其功能

运算符描述示例表达式结果(二进制)
&按位与5 & 3(二进制 101 & 0111(二进制 001
|按位或6 | 3(二进制 110 | 0117(二进制 111
^按位异或7 ^ 1(二进制 111 ^ 0016(二进制 110
<<左移3 << 16(二进制 110
>>右移8 >> 14(二进制 100

实际案例:权限管理中的位掩码

假设一个用户权限字段 permissions 的二进制位表示不同权限:

  • 第 0 位(1):读权限
  • 第 1 位(2):写权限
  • 第 2 位(4):删除权限

要检查用户是否同时拥有读和写权限:

SELECT *  
FROM users  
WHERE (permissions & 3) = 3;  
-- 3 的二进制是 11,与 `permissions` 按位与后等于 3 表示两位均为 1  

类比解释:位运算符如同拼图

每个二进制位像一个开关,位运算符通过组合这些开关(如 | 打开多个权限)或检查开关状态(如 & 验证权限组合),实现高效的数据操作。


五、字符串运算符:文本处理的“瑞士军刀”

字符串运算符(String Operators)主要用于操作文本数据,例如连接字符串或判断子串存在性。在 SQLite 中,|| 是唯一支持的字符串连接运算符。

关键字符串运算符与示例

运算符描述示例表达式结果
||字符串连接'Hello' || 'World''HelloWorld'

实际案例:生成完整地址

假设有一个 customers 表,包含 streetcitycountry 字段,可以拼接成完整地址:

SELECT first_name || ' ' || last_name AS full_name,  
       street || ', ' || city || ', ' || country AS full_address  
FROM customers;  

类比解释:字符串连接如同乐高积木

|| 运算符像乐高积木,将多个文本块(字段或字符串)拼接成一个完整的“作品”。


六、特殊运算符:扩展 SQL 的灵活性

SQLite 还提供了一些特殊运算符,用于处理范围、NULL 值或模式匹配等场景。

常见特殊运算符详解

1. BETWEEN:范围筛选

用于检查一个值是否在指定的两个值之间:

SELECT *  
FROM employees  
WHERE hire_date BETWEEN '2020-01-01' AND '2020-12-31';  

2. IN:多值匹配

检查一个值是否在给定的集合中:

SELECT product_id, name  
FROM products  
WHERE category IN ('electronics', 'books');  

3. LIKE:模式匹配

用于模糊查询,支持通配符 %(匹配任意字符序列)和 _(匹配单个字符):

SELECT *  
FROM customers  
WHERE email LIKE '%@gmail.com'; -- 查找 Gmail 用户  

4. IS NULLIS NOT NULL:检查空值

SELECT *  
FROM orders  
WHERE shipping_address IS NULL; -- 筛选未填写地址的订单  

类比解释:特殊运算符如同多用途工具

这些运算符像瑞士军刀中的不同工具,针对特定场景提供高效解决方案,例如 LIKE 相当于“文本搜索放大镜”。


结论:掌握 SQLite 运算符,解锁数据库的无限可能

SQLite 运算符是 SQL 开发的基石,无论是基础的算术运算、复杂的逻辑组合,还是高级的位操作,都能通过这些符号高效实现。本文通过案例和类比,系统性地讲解了各类运算符的使用场景和技巧。

对于初学者,建议从简单运算符(如 =>AND)开始练习,逐步过渡到位运算或字符串操作;中级开发者则可结合实际项目,探索运算符的组合应用。记住,实践是掌握 SQL 运算符的最佳途径——尝试用不同运算符构建查询,观察结果变化,最终实现数据的精准操控。

SQLite 运算符不仅是语法符号,更是开发者与数据对话的桥梁。通过灵活运用这些工具,你将能够更自信地应对数据库开发中的各类挑战。

最新发布