SQLite 运算符详解及应用实例(三)

SQLite 是一款轻量级的关系型数据库管理系统,广泛应用于嵌入式系统、移动应用和桌面应用中。本文将详细介绍 SQLite 中的各类运算符,包括算术运算符、比较运算符、逻辑运算符和位运算符,并通过实际示例帮助你更好地理解和应用这些运算符。

什么是 SQLite 运算符?

在 SQLite 中,运算符是一种特殊的保留字或字符,主要用于在 SQL 语句的 WHERE 子句中执行特定的操作,如算术计算、比较和逻辑判断。运算符可以帮助你在查询中指定条件,并将多个条件组合在一起,从而实现复杂的数据筛选和处理。

SQLite 支持以下几类运算符:

  • 算术运算符:用于执行基本的数学运算。
  • 比较运算符:用于比较两个值之间的关系。
  • 逻辑运算符:用于组合多个条件。
  • 位运算符:用于执行位级别的操作。

SQLite 算术运算符

算术运算符用于执行基本的数学运算,如加法、减法、乘法、除法和取模。假设我们有两个变量 a 和 b,其中 a = 10,b = 20,以下是常见的算术运算符及其用法:

运算符描述示例
+加法 - 将两个操作数相加a + b 结果为 30
-减法 - 左操作数减去右操作数a - b 结果为 -10
*乘法 - 将两个操作数相乘a * b 结果为 200
/除法 - 左操作数除以右操作数b / a 结果为 2
%取模 - 左操作数除以右操作数的余数b % a 结果为 0

实例

以下是一些使用 SQLite 算术运算符的简单示例:

sqlite> .mode line
sqlite> SELECT 10 + 20;
10 + 20 = 30

sqlite> SELECT 10 - 20;
10 - 20 = -10

sqlite> SELECT 10 * 20;
10 * 20 = 200

sqlite> SELECT 10 / 5;
10 / 5 = 2

sqlite> SELECT 12 % 5;
12 % 5 = 2

SQLite 比较运算符

比较运算符用于比较两个值之间的关系,返回的结果是一个布尔值(真或假)。假设我们有两个变量 a 和 b,其中 a = 10,b = 20,以下是常见的比较运算符及其用法:

运算符描述示例
==检查两个操作数的值是否相等,如果相等则条件为真(a == b) 结果为假
=检查两个操作数的值是否相等,如果相等则条件为真(a = b) 结果为假
!=检查两个操作数的值是否不相等,如果不相等则条件为真(a != b) 结果为真
<>检查两个操作数的值是否不相等,如果不相等则条件为真(a <> b) 结果为真
>检查左操作数的值是否大于右操作数的值,如果是则条件为真(a > b) 结果为假
<检查左操作数的值是否小于右操作数的值,如果是则条件为真(a < b) 结果为真
>=检查左操作数的值是否大于等于右操作数的值,如果是则条件为真(a >= b) 结果为假
<=检查左操作数的值是否小于等于右操作数的值,如果是则条件为真(a <= b) 结果为真
!<检查左操作数的值是否不小于右操作数的值,如果是则条件为真(a !< b) 结果为假
!>检查左操作数的值是否不大于右操作数的值,如果是则条件为真(a !> b) 结果为真

实例

假设有一个名为 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

以下是一些使用 SQLite 比较运算符的示例:

-- 列出薪水大于 50,000.00 的所有记录
sqlite> SELECT * FROM COMPANY WHERE SALARY > 50000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

-- 列出薪水等于 20,000.00 的所有记录
sqlite> SELECT * FROM COMPANY WHERE SALARY = 20000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0

-- 列出薪水不等于 20,000.00 的所有记录
sqlite> SELECT * FROM COMPANY WHERE SALARY != 20000;

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.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

-- 列出薪水大于等于 65,000.00 的所有记录
sqlite> SELECT * FROM COMPANY WHERE SALARY >= 65000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0

SQLite 逻辑运算符

逻辑运算符用于组合多个条件,返回的结果是一个布尔值(真或假)。以下是 SQLite 中常见的逻辑运算符及其用法:

运算符描述
AND用于在 WHERE 子句中组合多个条件,所有条件都为真时结果为真
BETWEEN用于在给定的最小值和最大值范围内查找值
EXISTS用于检查指定表中是否存在满足一定条件的行
IN用于将某个值与一系列指定的值进行比较
NOT IN用于将某个值与不在一系列指定的值进行比较
LIKE用于将某个值与使用通配符的相似值进行比较
GLOB用于将某个值与使用通配符的相似值进行比较,大小写敏感
NOT用于否定其他逻辑运算符的结果
OR用于在 WHERE 子句中组合多个条件,任意一个条件为真时结果为真
IS NULL用于将某个值与 NULL 进行比较
IS用于将某个值与另一个值进行比较,类似于 =
IS NOT用于将某个值与另一个值进行比较,类似于 !=
用于连接两个不同的字符串,生成一个新的字符串
UNIQUE用于确保指定表中的每一行都是唯一的

实例

假设有一个名为 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

以下是一些使用 SQLite 逻辑运算符的示例:

-- 列出年龄大于等于 25 且薪水大于等于 65,000.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

-- 列出年龄大于等于 25 或薪水大于等于 65,000.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

-- 列出年龄不为 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          South-Hall  45000.0
7           James       24          Houston     10000.0

-- 列出名字以 'Ki' 开始的所有记录
sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

-- 列出名字以 'Ki' 开始的所有记录(大小写敏感)
sqlite> SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
6           Kim         22          South-Hall  45000.0

-- 列出年龄为 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

-- 列出年龄既不是 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          South-Hall  45000.0
7           James       24          Houston     10000.0

总结

通过本文,我们详细介绍了 SQLite 中的算术运算符、比较运算符、逻辑运算符和位运算符,并通过实际示例展示了它们的应用场景。掌握这些运算符不仅有助于编写更高效的 SQL 查询,还能让你在数据处理和分析中更加得心应手。希望本文能对你在 SQLite 的学习和应用中有所帮助。