SQLite 表达式

2025 年 6 月 2 日 | 阅读 7 分钟

SQLite 是一种轻量级、无服务器的数据库引擎,广泛用于中小型应用程序、移动应用程序和嵌入式系统。SQLite 以单个文件形式存储在磁盘上,这使其比需要独立服务器进程的传统关系型数据库更具可移植性和效率。由于其可靠性和简单性,它通常是需要本地数据存储而无需复杂设置的应用程序的首选。

表达式对于 SQL 查询和数据操作至关重要。表达式是一组值、运算符和函数,它们相加得到一个单一值。这些表达式有助于计算、数据过滤和信息转换,以满足特定需求。表达式通常在 SQLite 的 SELECT、WHERE、ORDER BY 和其他子句中使用,以动态更改和检索数据。如果 SQL 查询仅限于检索静态数据而没有表达式,那么它们的灵活性和强大功能将大打折扣。

SQLite 支持的每种表达式类型都具有独特的功能。其中包括布尔表达式(逻辑评估)、日期和时间表达式(管理日期相关数据)、算术表达式(数学计算)、字符串表达式(文本操作)、文字表达式(固定值)、列表达式(数据库列中的值)和 CASE 表达式(条件逻辑)。理解这些表达式对于编写高效且强大的 SQLite 查询至关重要。

SQLite 中的表达式类型

SQLite 中的文字表达式表示在查询执行期间保持不变的固定值。

这些值分为四大类,可以直接用于 SQL 语句中。

字符串文字——用单引号 ('text') 括起来。

示例

数字文字:可以是浮点数或整数值。

示例

Blob 文字:用于存储用单引号括起来并以 X 为前缀的二进制数据。

示例

NULL 文字:表示缺失或未定义的值。

示例

对于在查询、计算和数据库操作的默认设置中指定静态值,文字表达式至关重要。

列表达式

在 SQLite 中,列表达式通过在 SQL 查询中引用列值来动态访问、过滤或修改数据。与使用固定值的文字表达式不同,列表达式使查询能够处理存储在数据库表中的实际数据。为了提取有用的信息,这些表达式经常用于 SELECT、WHERE 和 ORDER BY 子句。

例如,列表达式可用于从名为 employees 的表中提取特定值,该表包含 name、salary 和 department 列。

在 SELECT 中使用列表达式

使用 WHERE 过滤数据

使用 ORDER BY 排序数据

通过允许用户根据存储值而不是固定输入检索和修改数据,列表达式为查询提供了更大的灵活性和动态性。

算术表达式

可以使用 SQLite 的算术表达式直接在 SQL 查询中执行数学运算。当使用数据库中的数值数据执行计算时,这些表达式非常有用。

SQLite 支持五种主要的算术运算符

  • 加法 (+) – 将两个数字相加。
  • 减法 (-) – 从一个数字中减去另一个数字。
  • 乘法 (*) – 将两个数字相乘。
  • 除法 (/) – 将一个数字除以另一个数字(返回浮点结果)。
  • 取模 (%) – 返回除法的余数。

计算总和、平均值、差异和其他数值洞察的查询可以从这些过程中受益。考虑一个 orders 表,其中列是 quantity、price 和 product。

计算每个产品的总价

对所有价格应用 10% 的折扣

查找价格除以 5 时的余数

查询中的实时计算,最大程度地减少了对外部处理的需求,并提高了数据分析的有效性,这取决于算术表达式。

字符串表达式

在 SQLite 中,可以使用字符串表达式更改表中存储的文本数据。这些表达式通过使用内置函数在查询中更改、提取或检查字符串值。连接、长度测量、子字符串提取和大小写转换是少数最常用的字符串函数。

SQLite 中常见的字符串函数

连接 (||)——将两个或多个字符串连接成一个。

输出:Hello World

长度 (LENGTH()) – 返回字符串中的字符数,包括空格。

输出 16

子字符串 (SUBSTR()) – 根据起始位置和长度提取字符串的一部分。

输出:atab

大写和小写 (UPPER(), LOWER()) – 将文本转换为大写或小写。

输出:SQLITE, sqlite

字符串表达式对于有效管理 SQLite 中的文本数据至关重要,因为它们经常用于数据格式化、搜索和文本处理。

布尔表达式

在 SQLite 中,布尔表达式评估条件并返回 TRUE、FALSE 或 NULL。尽管 SQLite 缺乏特定的布尔数据类型,但它将 0 视为 FALSE,将任何非零值(通常是 1)视为 TRUE,将 NULL 视为未知值。WHERE、HAVING 和 CASE 语句经常使用布尔表达式来根据逻辑要求过滤或更改数据。

SQLite 中的逻辑运算符

AND——如果两个条件都为真,则返回 TRUE。

此搜索返回 IT 部门中薪资超过 50,000 美元的员工。

OR – 如果至少一个条件为真,则返回 TRUE。

此查询选择财务或人力资源部门的员工。

NOT – 反转条件的结果。

以这种方式检索不在销售部门的员工。

通过使用逻辑条件,布尔表达式有助于优化查询结果,提高 SQLite 数据检索的准确性和效率。

日期和时间表达式

SQLite 提供集成函数来有效管理日期和时间值。鉴于 SQLite 缺乏特定的 DATE 或 DATETIME 数据类型,它将日期和时间值记录为 TEXT(ISO 8601 格式)、INTEGER(Unix 时间戳)或 REAL(儒略日数字)。

SQLite 中常见的日期和时间函数

DATE()——以 YYYY-MM-DD 格式返回日期。

输出:当前日期,例如 2025-02-13。

DATETIME() – 返回日期和时间。

输出:2025-02-13 14:30:00(示例)。

STRFTIME() – 格式化日期/时间值。

计算未来或过去日期

这会将当前日期加七天。

SQLite 的日期和时间函数对于处理计划、记录和依赖时间的数据操作至关重要。

CASE 表达式

SQLite 中的 CASE 表达式是 SQL 查询中条件逻辑的强大工具。它允许根据预定情况进行各种输出,就像 IF-ELSE 表达式一样。CASE 语句在按顺序评估条件后提供第一个匹配的结果。如果没有条件匹配,ELSE 子句将返回默认值。

CASE 表达式的语法

在 SELECT 语句中使用 CASE

以下查询根据薪资对员工进行分类

在 WHERE 子句中使用 CASE

根据部门特定的薪资标准过滤员工

CASE 表达式增强了查询的灵活性,无需修改数据库结构即可实现条件转换和过滤。

SQLite 表达式的实际用例

实际应用程序经常使用 SQLite 表达式来有效更改、过滤和分析数据。表达式简化了搜索并增强了 Web 应用程序、数据分析和移动应用程序中的数据处理。

Web 应用程序

许多 Web 应用程序使用 SQLite 进行本地数据存储,特别是在用户身份验证系统、电子商务平台和内容管理系统 (CMS) 中。表达式有助于动态内容过滤和显示。

示例:购物车中产品的总成本由电子商务应用程序中的算术表达式确定。

可以使用 CASE 表达式根据订阅级别对用户进行分类

数据分析

为了从存储的数据中获取洞察,数据分析师使用表达式。字符串表达式格式化报告,但布尔表达式过滤记录。

例如,从时间戳确定月份以分析趋势。

移动应用程序

对于离线数据存储,Android 和 iOS 应用程序默认附带 SQLite 作为数据库。表达式最大限度地提高了查询的效率和性能。

在聊天应用程序中对最近的消息进行排序是一个例子。

应用程序可以通过利用 SQLite 表达式动态分析和显示数据,从而增强用户体验和性能。

SQLite 表达式对于提高 SQL 查询的有效性和功能至关重要。它们允许用户在查询中过滤数据、处理字符串、执行计算和应用条件逻辑。算术、字符串、布尔、日期/时间 和 CASE 表达式等表达式使数据转换和检索更加高效。

SQLite 表达式保证 Web 应用程序、移动应用程序和数据分析中的灵活动态数据管理。熟练理解和使用这些术语可以大大提高数据库效率并简化复杂的流程。任何在实际应用程序中使用关系型数据库的人都需要熟练掌握 SQLite 表达式。