本章我们将介绍 SQLite 内置函数。 SQLite 数据库中有三种类型的函数:核心函数,聚合函数和日期&时间函数。
我们将介绍每组 SQLite 函数中的一些函数。
SQLite 核心函数
在这一组中,我们具有各种函数。 有些是数字函数,有些是文本处理。 其他人则做一些非常具体的事情。
sqlite_version()
函数返回 SQLite 库的版本。
random()
函数返回-9223372036854775808 和+9223372036854775807 之间的伪随机整数。
abs()
函数返回数字参数的绝对值。
在我们的示例中,max()
和min()
函数从Cars
表中返回最昂贵和最便宜的汽车。
upper()
函数将字符转换为大写字母。
使用lower()
函数,我们将前三行的名称更改为小写字母。
length()
函数返回字符串的长度。
自打开当前数据库连接以来,total_changes()
函数返回由INSERT
,UPDATE
或DELETE
语句引起的行更改数。 在当前的数据库连接中,我们已经完成了三个INSERT
语句,所以总更改等于三个。
sqlite_compileoption_used()
函数返回一个布尔值,具体取决于在构建过程中是否使用了该选项。 在我们的例子中,我们检查默认情况下是否强制执行FOREIGN KEY
约束。 该函数返回 0,这意味着默认情况下不强制执行约束。 我们使用PRAGMA
语句进行更改。 (PRAGMA 外键= 1;)
typeof()
函数返回参数的数据类型。
SQLite 聚合函数
通过聚合函数,我们可以获得一些统计数据。 带有单个参数的聚合函数可以在DISTINCT
关键字之后。 在这种情况下,重复元素将在传递到聚合函数之前被过滤。
我们总结一下Cars
表中的内容。
请注意,没有重复的记录。
count()
函数返回表中的行数-共有八辆汽车。
在Orders
表中,我们确实有重复的客户记录。
从逻辑上讲,每个客户可以下多个订单。 我们如何计算订单数量以及如何计算客户数量?
该 SQL 语句返回订单数。 要计算唯一客户的数量,我们必须利用DISTINCT
子句。
Orders
表中有 5 个客户。 他们下了 11 个订单。
接下来,我们将演示count(*)
和count(ColumnName)
函数之间的区别。 区别在于它们处理NULL
值的方式。
首先,我们更改sqlite3
显示NULL
值的方式。 默认情况下,NULL
值显示为空字符串。
在这里,我们创建具有 3 个数字值和 2 个NULL
值的表Testing
。
last_insert_rowid()
函数返回最后插入的行的 ID。
count(*)
返回表中的行数。 它考虑了 NULL 值。
count(Id)
仅计算非NULL
值。
avg()
函数返回所有非NULL
记录的平均值。 在我们的示例中,我们在Cars
表中显示了汽车的平均价格。
最后,我们提到sum()
函数。 它将所有非NULL
值相加。
在这里,我们计算客户下的订单数量。
SQLite 日期和时间函数
SQLite 具有处理日期和时间的函数。 这些函数采用各种时间字符串,修饰符和格式。
带有now
字符串的date()
函数返回当前日期。
datetime()
函数返回当前日期和时间。
time()
函数给出当前时间。
now
字符串可以省略。
date()
,time()
和datetime()
函数的第一个参数是时间字符串。 可以紧跟一个或多个修饰符。
在此示例中,“ 2 个月”是修饰语。 它会将当前日期增加两个月。 因此该函数返回从今天起两个月的日期。
也可以使用负修饰符。 在此示例中,我们从今天开始提取 55 天。
使用start of year
修饰符,我们可以得到年初的日期,例如 1 月 1 日。
借助start of day
修饰符,我们可以了解当天的开始时间。
weekday
修饰符前进到下一个日期,其中星期日是 0,星期一 1,…,星期六 6。在本示例中,我们获得最近的星期六的日期。
修饰符可以组合。
该 SQL 语句返回当年 11 月的第一个星期四。 在此示例中,我们使用了三个修饰符:start of year
,+x months
和weekday x
。 now
时间字符串给出当前日期。 start of year
将日期向后移动到年初。 10 months
在当月(1 月)增加了 10 个月。 最后,weekday 4
修饰符将日期提前到第一个星期四。
strftime()
函数返回根据指定为第一个参数的格式字符串格式化的日期和时间。 第二个参数是时间字符串。 可以紧跟一个或多个修饰符。
我们可以使用strftime()
函数以其他格式返回日期。
该 SQL 语句返回每月的当前日期。 我们使用了strftime()
函数。
在这里,我们计算了到圣诞节为止的天数。 %j
修饰符给出时间字符串的年份。